如何在 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”?的主要内容,如果未能解决你的问题,请参考以下文章

附加属性未触发 IMultiValueConverter

为动态 JSON 创建 C# 模型

如何放置 Forms 控件?

在 C# .net winforms 中将字典绑定到 ComboBox

WPF整理-为控件添加自定义附加属性

AAuto如何设置combobox