EntityFramework-编辑子项并传播更改

问题描述

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

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

当我使用

_DbContext.Entry(_Paz).Reload();

修改的字段未更新... 另外,如果我打电话

_dbContext.SaveChangesAsync();

树状视图未更新...

我正在使用MVVM Light,但由于属性直接来自EF,所以无法调用Set()

这是TreeView:

            <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">
                <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>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)