实体没有动态更新

时间:2015-04-30 12:53:40

标签: .net wpf

我正在使用.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>

1 个答案:

答案 0 :(得分:1)

  

我必须重新加载屏幕以查看更改

重新加载整个对象表明,保存值的类不实现INotifyPropertyChanged,或者Xaml中的绑定可以设置为ModeTwoWay以适应任何更改从前到后保持同步,反之亦然。

需要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}"/>