我正在使用.NET框架中的wpf创建一个应用程序(使用visual studio)。我有一个实体" User",该实体由各种属性构成: 1.名称varchar 2. IsCanRead 3. IsCanWrite
第二和第三属性控制用户是否可以读取或写入两者。这些都是复选框。根据复选框,选中3个下拉列表显示在另一个屏幕中 下拉列表包括可以阅读的人 2.下拉2包括可以写作的人 3第三个下拉列表给出了可以同时执行这两个操作的人的姓名
现在每当我更改实体的任何属性时,我都必须重新加载屏幕以查看更改。任何人都可以帮助我,并告诉我如何确保用户不需要重新加载屏幕?并立即反映出这些变化?
以下是xaml代码
<DataGrid.Columns>
<DataGridTemplateColumn Header="Name" Width="Auto" SortMemberPath="Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Name}">
<i:Interaction.Behaviors>
<behavior:AllowableCharactersTextBoxBehavior RegularExpression="^[a-zA-Z0-9 ]*$" MaxLength="50"/>
</i:Interaction.Behaviors>
</TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Can Read?" SortMemberPath="IsCanRead">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=IsCanRead}" IsEnabled="False" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=IsCanRead, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn Header="Can Write?" SortMemberPath="IsCanWrite">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=IsCanWrite}" IsEnabled="False" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=IsCanWrite, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
答案 0 :(得分:1)
我必须重新加载屏幕以查看更改
重新加载整个对象表明,保存值的类不实现INotifyPropertyChanged
,或者Xaml中的绑定可以设置为Mode
到TwoWay
以适应任何更改从前到后保持同步,反之亦然。
需要INotifyProperty
使用的示例
private bool _IsCanRead;
public bool IsCanRead
{
get { return _IsCanRead; }
set { _IsCanRead= value; OnPropertyChanged("IsCanRead"); }
}
TwoWay
模式绑定的示例:
<CheckBox IsChecked="{Binding Path=IsCanRead,
Mode=TwoWay
UpdateSourceTrigger=PropertyChanged}"/>