我已经实现了一个DataGrid:
<DataGrid
x:Name="MyDataGridFilter"
ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn
x:Name="FilterTextCol01">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox
Grid.Column="0"
IsHitTestVisible="True"
Text="{Binding Path=FilterTextCol01}" />
<CheckBox
Grid.Column="1"
x:Name="FilterAktivTextCol01"
IsHitTestVisible="True"
IsChecked="{Binding Path=FilterAktivTextCol01}"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
守则中的绑定是这样的:
FilterItemsList = new ObservableCollection<DataGridFilterEntity>();
MyDataGridFilter.DataContext = FilterItemsList;
(它被缩短) FilterItemsList实现为INotifyPropertyChanged clas:
public class DataGridFilterEntity : INotifyPropertyChanged
使用成员FilterTextCol01(当然):
public string FilterTextCol01
{
get { return _FilterTextCol01; }
set
{
_FilterTextCol01 = value;
Changed("FilterTextCol01");
}
}
一切正常。当我更改FilterItemsList时,DataGrid会反映这些更改。 但是当我在UI中进行一些更改(在DataGrid中)时,它没有被ObservableCollection(FilterItemsList)反映。
我搜索并尝试了几个小时但没有找到任何解决方案。 有谁知道如何解决这个问题? 谢谢!
答案 0 :(得分:1)
你需要TwoWay绑定。
例如,
<TextBox
Grid.Column="0"
IsHitTestVisible="True"
Text="{Binding Path=FilterTextCol01, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<CheckBox
Grid.Column="1"
x:Name="FilterAktivTextCol01"
IsHitTestVisible="True"
IsChecked="{Binding Path=FilterAktivTextCol01, Mode=TwoWay}"/>
答案 1 :(得分:0)
您对GUI进行了哪些更改?您是否正在更新Text
的{{1}}并查看TextBox
?
如果是这样,同样的例子适用于我的情况。当我关注文本框或复选框时,我收到了更新的文本并在我的模型中检查了布尔值。