Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自跟踪实体ListView绑定在更改时丢失值_C#_Wpf_Silverlight_Entity Framework_Mvvm - Fatal编程技术网

C# 自跟踪实体ListView绑定在更改时丢失值

C# 自跟踪实体ListView绑定在更改时丢失值,c#,wpf,silverlight,entity-framework,mvvm,C#,Wpf,Silverlight,Entity Framework,Mvvm,我的应用程序使用自跟踪实体&我从WCF服务获取数据。在我的WCF服务查询中,我使用.Include加载查询中的实体关系 public List<IndividualDisability> GetIndividualDisabilities() { using (var context = new ADATrackingEntities()) { return context.IndividualDisabilit

我的应用程序使用自跟踪实体&我从WCF服务获取数据。在我的WCF服务查询中,我使用.Include加载查询中的实体关系

    public List<IndividualDisability> GetIndividualDisabilities()
    {
        using (var context = new ADATrackingEntities())
        {
            return context.IndividualDisabilities.OfType<IndividualDisability>().Include("ADACode").ToList();
        }
    }
然后我将结果添加到ICollectionView。我有一个绑定到ICollectionView的ListView,ListView中的一些列绑定到实体关系中的值。我有一个主详细信息设置,listview的当前项绑定到我正在编辑的实体对象

<ListView Margin="0,0,10,0" MaxHeight="400" MaxWidth="300" HorizontalAlignment="Left" AlternationCount="2" ItemsSource="{Binding Path=IndividualDisabilitiesSource}" IsSynchronizedWithCurrentItem="True" SelectedItem="{Binding Path=CurrentIndividualDisability, Mode=TwoWay}" SelectionMode="Single" ItemContainerStyle="{DynamicResource ListViewItemContainerStyle}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Case #" Width="Auto"  
                DisplayMemberBinding="{Binding Individual.CaseNumberShort}" />
            <GridViewColumn Header="LName" Width="Auto"  
                DisplayMemberBinding="{Binding Individual.LastName}" />
            <GridViewColumn Header="FName" Width="Auto"  
                DisplayMemberBinding="{Binding Individual.FirstName}" />
            <GridViewColumn Header="ADA Code" Width="Auto" 
                DisplayMemberBinding="{Binding ADACode.ADACodeDesc}" />
        </GridView>
    </ListView.View>
</ListView>
问题是,在我的编辑部分,我使用一个组合框来更改所选记录中的值,并将ListView中的相关值更改为单元格中的空白值。让它再次显示的唯一方法是返回数据库并再次加载数据。我的combobox或listview绑定是否缺少一些内容

<ComboBox Height="25" Width="200" ItemsSource="{Binding ADACodesSource}"
    DisplayMemberPath="ADACodeDesc" SelectedValuePath="ADACodeID" 
    SelectedValue="{Binding Path=CurrentIndividualDisability.ADACodeID, Mode=TwoWay, 
    NotifyOnValidationError=True, ValidatesOnDataErrors=True}" />

我无法让它与combobox一起工作,所以我决定创建一个自定义控件。它是一个自动完成/组合框,似乎具有正确的绑定类型。通过此博客文章中详细介绍的控件,一切都很好:


如果在运行此代码时查看输出控制台,是否看到任何绑定错误?看起来您只是在为要更改的属性设置不同的id。您是否正在处理更改属性设置器中的实际对象代码?我可能会用'ADACode'绑定SelectedItem,而不是用'ADACodeId'绑定SelectedValue/SelectedValuePath。相同的DisplayMemberPath。我没有看到任何绑定错误,但当我使用SelectedItem绑定时,它实际上会按照预期在listview中正确更改值。但是,它现在没有在组合框中设置值。我也有双向装订套装。有什么想法吗?我在MSDN WPF论坛上发布了一个复制错误的示例项目。希望这能帮助我更好地展示我的桌子关系和我的处境。有人有什么想法吗??我不知道从这里走到哪里。对于任何有这个问题的普通组合框控件。我通过在组合框属性中设置IsSyncronizedWithCurrentItem=true修复了它。现在一切都好了。