C# WPF组合框将文本绑定到选定项
我尝试将组合框绑定到集合:C# WPF组合框将文本绑定到选定项,c#,wpf,C#,Wpf,我尝试将组合框绑定到集合: <ComboBox Margin="4 0 2 0" ItemsSource="{Binding YAxes}" SelectedItem="{Binding SelectedYAxis, Mode=TwoWay}" DisplayMemberPath="AxisTitle" SelectedValuePath="AxisTitle"/> 但是组合框上的文本永远不会更改为所选项目AxisTitle。如何将Selected
<ComboBox Margin="4 0 2 0"
ItemsSource="{Binding YAxes}"
SelectedItem="{Binding SelectedYAxis, Mode=TwoWay}"
DisplayMemberPath="AxisTitle"
SelectedValuePath="AxisTitle"/>
但是组合框
上的文本永远不会更改为所选项目AxisTitle
。如何将SelectedItem
的AxisTitle
显示为组合框的文本
UPD:文本永远不会显示,即使已明确设置:
<ComboBox Margin="4 0 2 0"
ItemsSource="{Binding XAxes}"
SelectedItem="{Binding SelectedXAxis, Mode=TwoWay}"
DisplayMemberPath="AxisTitle"
Text="Asdasd"/>
以及上面的参考资料部分:
<DataTemplate x:Key="AxisCBTextTemplate">
<TextBlock Text="{Binding AxisTitle}"/>
</DataTemplate>
UPD 3
我的意思是什么
显示某些选定文本的任务应该很简单,但有困难。我找到了这个问题的根本原因。来自XAxes
和YAxes
的每个IAxis
(它是一个轴对象)已显示在图形上(即绑定)。将它们绑定到其他控件(如ListBox)会导致异常:“必须先断开指定子项与当前父项Visual的连接,然后才能附加到新父项Visual。”,我在尝试将它们绑定到ListBox时发现了这一点
ComboBox捕捉到这样的异常,在任何情况下都不会输出StackTrace。在我的例子中,这个异常被包装到NullReferenceException
中,并且只在单击没有设置ItemTemplate
的组合框时发生。虽然我在细节上可能不完全正确,但用字符串集合替换XAxes
和YAxes
可以解决这个问题。要显示任意文本组合框的IsEditable
属性,应该设置为true
,我希望将项目源YAxes设置为可观察的集合可以解决这个问题。@mohammedmazin nope,它不能帮助您的IAxis
对象必须重写Equals
以使组合框匹配ItemsSource
列表中的SelectedItem
。如何设置SelectedYAxis
实例?它是来自YAxes
(在这种情况下,SelectedItem应该在没有自定义Equals
的情况下工作)的值还是从外部源加载的值(在这种情况下,对象。Equals
与您的实例不匹配)?您不能混合使用SelectedValuePath=“Axisttitle”
使用SelectedItem
请删除SelectedValuePath
并重试。我建议从最简单的
开始,并检查在选择项目时是否更新组合框文本
<ComboBox Margin="4 0 2 0"
ItemsSource="{Binding YAxes}"
SelectedItem="{Binding SelectedYAxis, Mode=TwoWay}"
ItemTemplate="{StaticResource AxisCBTextTemplate}"/>
<DataTemplate x:Key="AxisCBTextTemplate">
<TextBlock Text="{Binding AxisTitle}"/>
</DataTemplate>