Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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# 数据视图中的WPF双向数据绑定组合框_C#_Wpf_Xaml_Data Binding_Combobox - Fatal编程技术网

C# 数据视图中的WPF双向数据绑定组合框

C# 数据视图中的WPF双向数据绑定组合框,c#,wpf,xaml,data-binding,combobox,C#,Wpf,Xaml,Data Binding,Combobox,我目前在自定义控件中有一个XAML组合框 <ComboBox Name="cboPropertyName" ItemsSource="{Binding}" Visibility="Hidden" GotFocus="TxtPropertyName_GotFocus" DataContextChanged="CboPropertyName_DataContextChanged"

我目前在自定义控件中有一个XAML组合框

<ComboBox Name="cboPropertyName"
          ItemsSource="{Binding}"
          Visibility="Hidden"
          GotFocus="TxtPropertyName_GotFocus"          
          DataContextChanged="CboPropertyName_DataContextChanged"  
          SelectionChanged="CboPropertyName_SelectionChanged"/>

它通过代码隐藏连接

        DataView DataPropsView = new DataView(_ControlData.Tables["GME_DataProperties"]);
        DataPropsView.RowFilter = "Key < 1000";
        DataPropsView.Sort = "Key ASC";

        cboPropertyName.DataContext = DataPropsView;
        cboPropertyName.DisplayMemberPath = "Name";
        cboPropertyName.SelectedValuePath = "Key";

        cboPropertyName.SelectedValue = Convert.ToInt32(_PropData["SubPropertyValue"]);
DataView DataPropsView=newdataview(_ControlData.Tables[“GME_DataProperties”);
DataPropsView.RowFilter=“Key<1000”;
DataPropsView.Sort=“Key ASC”;
cboPropertyName.DataContext=DataPropsView;
cboPropertyName.DisplayMemberPath=“Name”;
cboPropertyName.SelectedValuePath=“Key”;
cboPropertyName.SelectedValue=Convert.ToInt32(_-PropData[“subpertyvalue]”);
但是,当此客户控件的下拉列表发生更改时,PropData数据视图将不会更改/更新


如何使这成为一个双向数据绑定,以便数据视图更新?

我建议您放弃codebehind,在XAML中设置所有信息,以便更轻松地进行设置

要在上使用双向绑定,需要将目标绑定到
SelectedValue
,例如:

SelectedValue="{Binding CategoryID, Mode=TwoWay}" 

您似乎对数据驻留的位置存在问题,这是您最大的问题

一般来说,人们不必绑定词典。绑定本质上是一种反射,至少可以说,反射到字典中是有问题的。要执行您需要执行的操作,您应该在控件上创建一个通知属性,并对其进行双向绑定。在该属性的集合上,同时更改字典值



此外,您也不会绑定到视图进行更改,因为它是一个视图。使用MVVM模式查看,从ViewModel创建视图,并将组合框绑定到ViewModel的数据。然后,双向绑定将按照通常设计的方式工作。

大多数人使用组合框的方式是继承datacontext,将itemssource绑定到集合,将selectedvalue(或index)绑定到继承的datacontext中的属性。通常,要从中选择的项是静态数据和动态源。主视图模型中的集合是常见的选择。要更新
\u PropData
中的哪一行?