Wpf EntityFramework-编辑子项并传播更改

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(); 编辑的字段未更新。。。 如果我

我有一个经典的场景,一个树视图和一个详细的面板来显示记录的细节。 我在详细信息面板中添加了一个编辑按钮,该按钮将RichTextBox属性IsReadOnly从false更改为true,反之亦然。 编辑时,我有两个按钮:保存和取消。 问题是如何通过细节面板和树中的绑定传播更改

假设树中显示了名称-姓氏。在详细信息中,我将有一个字段用于名称,一个字段用于姓氏 这两个字段都直接绑定到EF对象

当我使用

_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="&#xE74E;"
                    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>