nasıl şablonun şunun gibi görünür yazabilirsiniz wpf için UpdateSourceTrigger = PropertyChanged uygulansın mı?tüm metin kutularının
<DataTemplate ... TextBlock>
UpdateSourceTrigger=PropertyChanged
</DataTemplate>
nasıl şablonun şunun gibi görünür yazabilirsiniz wpf için UpdateSourceTrigger = PropertyChanged uygulansın mı?tüm metin kutularının
<DataTemplate ... TextBlock>
UpdateSourceTrigger=PropertyChanged
</DataTemplate>
Bir tarzında UpdateSourceTrigger
için varsayılan modunu değiştiremezsiniz. (Bu durumda Text
mülkiyet) DependencyProperty
kayıtlı olduğunda bu FrameworkPropertyMetadata
sınıfın DefaultUpdateSourceTrigger
olarak yapılandırılır.
Sen bağımlılık özelliği kaydolurken bu değeri TextBox
kaynaklanmaktadır ve değiştiren bir özel metin kutusu türü oluşturabilir ya. Alternatif olarak, otomatik (bağlama dayalı olan kongre kapsamında, kod aracılığıyla) bir uygulamadaki tüm metin kutuları için bu ayarlar Caliburn.Micro MVVM çerçevesi içine bakmak isteyebilirsiniz.
Hemen kabul cevabı uzanan (ve evet, ben bu soruyu :) necromancing de farkındayım):
Aslında kendi TextBox oldukça basittir, TextBoxExt (çok uzatılmaması arama sağlar, ama bilirsin ...)
public class TextBoxExt : TextBox
{
private static readonly MethodInfo onTextPropertyChangedMethod
= typeof(TextBox).GetMethod("OnTextPropertyChanged", BindingFlags.Static | BindingFlags.NonPublic);
private static readonly MethodInfo coerceTextMethod
= typeof(TextBox).GetMethod("CoerceText", BindingFlags.Static | BindingFlags.NonPublic);
static TextBoxExt()
{
TextProperty.OverrideMetadata(
typeof(TextBoxExt),
// found this metadata with reflector:
new FrameworkPropertyMetadata(string.Empty,
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault | FrameworkPropertyMetadataOptions.Journal,
new PropertyChangedCallback(MyOnTextPropertyChanged),callback
new CoerceValueCallback(MyCoerceText),
true, // IsAnimationProhibited
UpdateSourceTrigger.PropertyChanged)
);
}
private static object MyCoerceText(DependencyObject d, object basevalue)
{
return coerceTextMethod.Invoke(null, new object[] { d, basevalue });
}
private static void MyOnTextPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
onTextPropertyChangedMethod.Invoke(null, new object[] { d, e });
}
}
bir yerlerinde {ResourceDictionary} .xaml veya App.xaml içinde
:<Style TargetType="{x:Type control:TextBoxExt}"
BasedOn="{StaticResource {x:Type TextBox}}" />
cevabı güncelledik. – devdigital
MVVM çerçevesini kullanarak bir göz attınız mı? Bu size bir sürü iş kazandıracak ve bağlanma Caliburn.Micro ile bir sevinç. Kendi çözümünüzü kullanmak istiyorsanız, kendi TextBox türetilmiş türünüzü oluşturmak yerine özel bir biçimlendirme uzantısı veya özel bir ciltleme yazılabilir. bazı fikirler için http://www.paulstovell.com/wpf-delaybinding veya http://www.hardcodet.net/2008/04/wpf-custom-binding-class göz at. – devdigital
Cevabınız için teşekkür ederiz! – syned