我有ObservableCollection
:
public ObservableCollection<RepairInfo> RepairList { get; set; }
我将它绑定到DataGrid
:
<DataGrid SelectionMode="Single" ItemsSource="{Binding RepairList}" Name="RepairsGrid" AutoGenerateColumns="False">
我没有使用RepairInfo
类的所有属性,所以我指定哪个属性必须使用每个列,如下所示:
<DataGridTextColumn Binding="{Binding IMEI}">
<DataGridTextColumn.Header>
<TextBox MinWidth="90" Text="{Binding IMEIFilter, UpdateSourceTrigger=PropertyChanged}" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
TextBox
内的DataGridTextColumn.Header
用于过滤数据。
所以这是我的问题 - 来自TextBox
的值不会更新ViewModel
中的属性。如果我把TextBox
放在DataGridTextColumn.Header
之外,一切都很好。我想这是由我Binding
的{{1}}属性造成的,但我不知道如何解决它。
答案 0 :(得分:1)
IMO。 。更好的方法是在MainWindow Viewmodel中拥有Header
的属性,你可以像这样Bind
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding IMEI}">
<DataGridTextColumn.Header>
<TextBox MinWidth="90" Text="{Binding DataContext.IMEIFilter,
RelativeSource={RelativeSource AncestorType={x:Type local:MainWindow}}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>