Bir dize ile timeformat arasında dönüştürmek için kullanıyorum bir dönüştürücü ile sorunları yaşıyorum. dönüştürücü kendisi gayet iyi çalışıyor ve bunun gibi implemeneted edilir:Geçerli DataContext ile IValueConverter kullanarak iki yönlü bağlama
[ValueConversion(typeof(string), typeof(SimpleTime))]
public class StringToSimpleTimeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
// convert from string to SimpleTime and return it
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// convert value from SimpleTime to string and return it
}
}
dönüştürücü kullanan XAML böyle usercontrol.resources içinde dönüştürücü kendisi içerir: özellik karşılaşılırsa
<converter:StringToSimpleTimeConverter x:Key="stringToSimpleTimeConverter"/>
(I 'kullanılan simpletime düzenleme için), arka planda DataTemplate wpf araç ile ilgili veri kılavuzunu kullanıyorum:
<DataTemplate x:Key="SimpleTimeEditingTemplate">
<TextBox Text="{Binding, Converter={StaticResource stringToSimpleTimeConverter}, Mode=TwoWay}"/>
</DataTemplate>
i karşılaşmak ediyorum sorun con olmasıdır Eğer bir twoway çevirici (ve her iki yönde de ihtiyacım var) ise, bağlayıcıda belirtilen bir yolun olması gerekir, fakat ayarlamak istediğim özellik halihazırda mevcut olan DataContext'tir - O zaman bunun için hangi yolu belirleyebilirim?
Düşünebildiğim tek geçici çözüm, SimpleTime'da yalnızca geçerli SimpleTime'ı alan veya ayarlayan bir kukla özelliktir. herhangi bir yardım olduğunu ...
düzgün çalıştığı ama daha fazla kez için dönüştürücüler ihtiyaç, özellikle gerçekten uygun bir çözüm değildir<TextBox Text="{Binding Clone, Converter={StaticResource stringToSimpleTimeConverter}, Mode=TwoWay}"/>
aracılığıyla o birine
public class SimpleTime
{
...
public SimpleTime Clone
{
get { return new SimpleTime(_amount, _format); }
set { this._amount = value._amount; this._format = value._format; }
}
}
ve bağlama takdir alkış, manni
Ben metin kutusu için bir ana usercontrol kullanarak ve onun datacontext için bağlayıcı kullanarak benzer bir yaklaşım denedim. IValueConverter, dizgeyi simpletime çevirmek için doğru çağrılır ve dizgeyi kontrolde görüntülemek için geri döner, ancak veri yapımdaki simpletime özelliği için hiçbir zaman aranmaz - herkes bunun nasıl olabileceğini biliyor mu? – manni
@manni: Bu konuda bir test uygulaması yaptım ve benim için gayet iyi çalışıyor gibi görünüyor. Kendi DataContext'ine bağlanıyor, bu yüzden işe yaramamak için bir neden göremiyorum. ConvertBack yönteminizin hiçbir zaman çağrılmadığından emin misiniz? –
çaba için teşekkürler. Söylemek istediğim şeyin yeterince açık olmadığını düşünüyorum: GUI'deki değeri değiştirirsem, dönüştürme ve dönüştürme yöntemlerim deniyor. ama ben (simpletime özelliği) ayarlama özelliği özellik setter çağrılmaz (breakpoint tetiklenmedi). Ben şimdi bir göz var, yardımlarınız için çok teşekkürler, ben gerçekten başka bir örnek inşa ettim – manni