2015-04-30 56 views
0

我在.NET框架(使用Visual Studio)中使用wpf進行應用程序。我有一個實體的「用戶」,則實體構成各種性質: 1.名稱VARCHAR 2. IsCanRead 3. IsCanWrite實體沒有得到動態更新

所述第二和所述第三屬性控制用戶是否可以讀或寫或兩者。這些都被綁定到複選框。根據複選框選中3個下拉菜單會顯示在屏幕的其他1 下拉一個由人誰可以讀取 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

IsCanRead和IsCanWrite因爲它們結合到複選框 – Manika

+1

顯示實際的類取布爾值和在Xaml中找到的實際綁定,保持簡潔但沒有填充不必要的信息,例如Xaml中的'Width'參數。 – OmegaMan

回答

1

我必須重新加載屏幕看到的變化

重新加載整個對象的建議無論其持有的價值類不執行INotifyPropertyChanged,或者Xaml中的綁定可以設置爲ModeTwoWay,以便將任何更改從前向後保持同步,反之亦然。所述INotifyProperty用法

實施例所需的TwoWay模式的

private bool _IsCanRead; 

public bool IsCanRead 
{ 
    get { return _IsCanRead; } 
    set { _IsCanRead= value; OnPropertyChanged("IsCanRead"); } 
} 

實施例結合:

<CheckBox IsChecked="{Binding Path=IsCanRead, 
           Mode=TwoWay 
           UpdateSourceTrigger=PropertyChanged}"/> 
+0

如果我更改用戶的名稱,它將在其他屏幕上實時顯示,但這不適用於其他屏幕。 – Manika

+0

@Manika請顯示您的Xaml代碼與類綁定並顯示Xaml綁定,以便我們可以嘗試重現。 :-) – OmegaMan

+0

這是行不通的:( – Manika