我有一个ObservableCollection<string>
绑定到ItemsControl
作为ItemsSource
,该绑定从VM到View都可以正常工作,但是如果我更改了{{ 1}}不会更新绑定到的TextBox
。
我似乎无法弄清楚为什么,有人知道这是为什么吗?
这是我的代码:
ObservableCollection
答案 0 :(得分:1)
您无法更新string
,因为它是不可变的。
您应该做的是将ObservableCollection<string>
替换为ObservableCollection<YourType>
,其中YourType
是具有公共string
属性的类,您可以获取或设置该属性:>
class YourType : INotifyPropertyChanged
{
private string _theString;
public string TheString
{
get { return _theString; }
set { _theString = value; NotifyPropertyChanged(); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
然后您在XAML标记中绑定到此属性:
<WrapPanel Orientation="Horizontal">
<TextBox Name="CalibrationNameTB" Grid.Column="1" Text="{Binding TheString, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource baseStyle}" Margin="0, 1" Padding="5, 1" Width="270" FontSize="12"/>
</WrapPanel>