TextBox'a sahip bir WPF görünümüm var, Text alanını bir SharePoint'e bağlayarak UpdateSourceTrigger özelliği PropertyChanged olarak ayarlanmış. değer ayarlanmazsa WPF - MVVM - Textbox viewmodel özelliği ile eşitleme dışı oluyor
<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainViewModel();
}
}
public string Name
{
get { return _Name; }
set
{
if (_Name != value)
{
if (value.Length <= 10)
{
_Name = value;
}
RaisePropertyChanged("Name");
}
}
}
, hala RaisePropertyChanged (basitçe PropertyChanged ateşler olan): ViewModel mülkiyet setter, ben 10 karakteri aşan metin önlemek için basit bir çek var.
Sorun, kullanıcı arayüzünde 11. karakteri yazdığımda _Name değerini güncellemem. PropertyChanged'ı görevlendiririm ve get accessor'un çağrıldığını görebiliyorum ve dizeyi sadece 10 karakterle döndürüyor. Ancak, TextBox'um bunu yansıtmıyor; hala 11 karakterli dizgiyi gösterir.
Bunun üzerine, eğer 11. karakterde, setterdeki metni "ERROR" olarak değiştiririm ve fire özelliği değişti, TextBox, değiştirilen metni göstermek için update yapar.
Öyleyse neden, dizideki metni önceki değere geri döndürürsem, UI bunu yansıtmıyor?
Maksimum karakterleri ele almanın alternatif yolları olduğunu biliyorum, ancak neden bu işe yaramayacak?
Teşekkürler! Bunun anababaya bildirilip bildirilmediği hakkında bir fikrin var mı? Olmazsa ben yaparım. –
@SteveOsborn: Haha, bunun annesine bildirilmiş olup olmadığından emin değilim :) Daha önce baktım ama hiçbir şey bulamadım ama tam olarak ne arayacağımı bilmek biraz zor. Devam et ve rapor et, bana sahip olduğun zaman haber ver ve onu tekrar yazacağım. –
https://connect.microsoft.com/VisualStudio/feedback/details/745368/wpf-textbox-binding-doesnt-work-properly –