ItemsControl不会更新ItemsSource绑定

时间:2018-10-26 09:15:26

标签: c# wpf xaml

我有一个ObservableCollection<string>绑定到ItemsControl作为ItemsSource,该绑定从VM到View都可以正常工作,但是如果我更改了{{ 1}}不会更新绑定到的TextBox

我似乎无法弄清楚为什么,有人知道这是为什么吗?

这是我的代码:

ObservableCollection

1 个答案:

答案 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>