如何在 ComboBox 中将“附加属性”定义为“SelectedValuePath”?
Posted
技术标签:
【中文标题】如何在 ComboBox 中将“附加属性”定义为“SelectedValuePath”?【英文标题】:How to define 'Attached property' as 'SelectedValuePath' in ComboBox? 【发布时间】:2011-03-02 02:14:40 【问题描述】:您好,我在 ComboBox 中的绑定有问题。我想将 ComboBox 项绑定到 ListView 列,并作为选定列上定义的附加属性的选定值返回值。
在下面的示例中,您可以看到显示所选列宽度的工作示例。如果您尝试将 ComboBox 中的 SelectedValuePath 更改为 (loc:SampleBehavior.SampleValue),则会出现绑定错误:
BindingExpression 路径错误:在“object”“GridViewColumn”上找不到“(u:SearchableListView.SearchMemberPath)”属性
组合框>
SampleBehavior.cs
使用 System.Windows; 使用 System.Windows.Controls; 命名空间 Problem_Sample1 公共静态类 SampleBehavior 公共静态只读 DependencyProperty SampleValueProperty = DependencyProperty.RegisterAttached( "样本值", 类型(int), typeof (SampleBehavior)); [AttachedPropertyBrowsableForType(typeof(GridViewColumn))] 公共静态 int GetSampleValue(GridViewColumn 列) 返回 (int)column.GetValue(SampleValueProperty); [AttachedPropertyBrowsableForType(typeof(GridViewColumn))] 公共静态无效 SetSampleValue(GridViewColumn 列,int 值) column.SetValue(SampleValueProperty, 值);
感谢您的任何帮助或建议。
【问题讨论】:
【参考方案1】:既然我偶然发现了这个(而且这是一些合理搜索的第一个谷歌结果),我不妨现在写一个答案。
请求的功能实际上完全按照请求的方式可用。
<ComboBox DockPanel.Dock="Top"
x:Name="combobox"
ItemsSource="Binding Path=View.Columns, ElementName=listview"
DisplayMemberPath="Header"
SelectedValuePath="(loc:SampleBehavior.SampleValue)">
将附加的属性路径放在(大括号)中很重要,否则它将尝试对源对象进行一些奇怪的查找。
此外,问题中的错误消息指出“BindingExpression path error: '(u:SearchableListView.SearchMemberPath)' property not found on 'object' ''GridViewColumn'”,因此错误消息绝对与完全不同的属性有关,而不是与“(loc:SampleBehavior.SampleValue)”有关。这种不一致似乎是与为了减少代码示例而进行的编辑有关的问题
【讨论】:
以上是关于如何在 ComboBox 中将“附加属性”定义为“SelectedValuePath”?的主要内容,如果未能解决你的问题,请参考以下文章