Wpf EntityFramework-编辑子项并传播更改
我有一个经典的场景,一个树视图和一个详细的面板来显示记录的细节。 我在详细信息面板中添加了一个编辑按钮,该按钮将RichTextBox属性IsReadOnly从false更改为true,反之亦然。 编辑时,我有两个按钮:保存和取消。 问题是如何通过细节面板和树中的绑定传播更改 假设树中显示了名称-姓氏。在详细信息中,我将有一个字段用于名称,一个字段用于姓氏 这两个字段都直接绑定到EF对象 当我使用Wpf EntityFramework-编辑子项并传播更改,wpf,.net-core,data-binding,entity-framework-core,mvvm-light,Wpf,.net Core,Data Binding,Entity Framework Core,Mvvm Light,我有一个经典的场景,一个树视图和一个详细的面板来显示记录的细节。 我在详细信息面板中添加了一个编辑按钮,该按钮将RichTextBox属性IsReadOnly从false更改为true,反之亦然。 编辑时,我有两个按钮:保存和取消。 问题是如何通过细节面板和树中的绑定传播更改 假设树中显示了名称-姓氏。在详细信息中,我将有一个字段用于名称,一个字段用于姓氏 这两个字段都直接绑定到EF对象 当我使用 _DbContext.Entry(_Paz).Reload(); 编辑的字段未更新。。。 如果我
_DbContext.Entry(_Paz).Reload();
编辑的字段未更新。。。
如果我打电话
_dbContext.SaveChangesAsync();
树视图未更新
我使用的是MVVM Light,但无法调用Set(),因为属性直接来自EF
这是树视图:
<TreeView
x:Name="TreeView"
Grid.Row="1"
ItemTemplate="{StaticResource PAZHTemplate}"
ItemsSource="{Binding Patients}"
SelectedItemChanged="select_SelectedItemChanged"
TreeViewItem.Expanded="ExpandItem" />
这是细节元素:
<ContentControl
Grid.Column="2"
Margin="{StaticResource XSmallLeftTopMargin}"
Content="{Binding Selected}"
ContentTemplateSelector="{StaticResource ContentTemplateSelector}" />
下面是选择器:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="TitoDoc\TPazDictionary.xaml" />
<ResourceDictionary Source="TitoDoc\TAppDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
<templateSelectors:TreeViewDataContentTemplateSelector
x:Key="ContentTemplateSelector"
APPTemplate="{StaticResource APPContentTemplate}"
APRTemplate="{StaticResource APRContentTemplate}"/>
这里是TPazDictionary.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DataTemplate x:Key="PAZContentTemplate" x:Name="PAZContentTemplate">
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Auto">
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="40" />
<ColumnDefinition Width="Auto" MinWidth="40" />
<ColumnDefinition Width="Auto" MinWidth="40" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
Style="{DynamicResource ContentHeader}"
Text="{Binding Name}" />
<Button
x:Name="Save"
Grid.Column="1"
Content=""
Command="{Binding CmdSaveSwitch, Mode=OneWay}"
ContentTemplate="{StaticResource IconFilterButton}"
DockPanel.Dock="Right"
ToolTipService.ToolTip="Save"
Visibility="{Binding IsVisible}" />
<Button
x:Name="LockUnlock"
Grid.Column="2"
Command="{Binding CmdEditSwitch, Mode=OneWay}"
Content="{Binding Icon}"
ContentTemplate="{StaticResource IconFilterButton}"
DockPanel.Dock="Right"
ToolTipService.ToolTip="Edit" />
</Grid>
<Grid Margin="0,6,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="40" />
<ColumnDefinition Width="*" MinWidth="40" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="12" />
<RowDefinition Height="Auto" MinHeight="12" />
</Grid.RowDefinitions>
<TextBlock
Grid.Row="0"
Grid.Column="0"
Padding="2"
Style="{DynamicResource ContentLabel}"
Text="Cognome" />
<TextBox
Grid.Row="1"
Grid.Column="0"
IsReadOnly="{Binding IsReadOnly}"
Text="{Binding Paz.Cognome}" />
<TextBlock
Grid.Row="0"
Grid.Column="1"
Style="{DynamicResource ContentLabel}"
Text="Nome" />
<TextBlock
Grid.Row="1"
Grid.Column="1"
Style="{DynamicResource ContentData}"
Text="{Binding Paz.Nome}" />
</Grid>
</StackPanel>
</ScrollViewer>
</DataTemplate>