在我们的应用中有一个非常大的数据集,充当我们的数据字典组合框列表等。这些数据staticly缓存和键控关闭2个变量的,所以我认为明智的做法是写一个从ComboBox派生出来的控件,并将这两个键作为DP进行公开。当这两个键具有适当的值时,我会根据它所对应的数据字典列表自动设置ComboBox的ItemsSource。我还自动将构造函数中的SelectedValuePath和DisplayMemberPath分别设置为Code和Description。WPF派生组合框SelectedValuePath问题
这里是如何从数据字典表中的ItemsSource的项目怎么看起来总是一个例子:
public class DataDictionaryItem
{
public string Code { get; set; }
public string Description { get; set; }
public string Code3 { get { return this.Code.Substring(0, 3); } }
}
码的值始终是4个字符长,但有时我只需要绑定的3个字符它。因此,Code3属性。
这里的代码看起来我的自定义组合框里面设置的ItemsSource:
private static void SetItemsSource(CustomComboBox combo)
{
if (string.IsNullOrEmpty(combo.Key1) || string.IsNullOrEmpty(combo.Key2))
{
combo.ItemsSource = null;
return;
}
List<DataDictionaryItem> list = GetDataDictionaryList(combo.Key1, combo.Key2);
combo.ItemsSource = list;
}
现在,我的问题是,当我改变SelectedValuePath在XAML来CODE3,这是行不通的。我绑定到SelectedValue的仍然从DataDictionaryItem获取完整的4个字符的代码。我甚至尝试在SelectedValuePath被更改并且没有骰子时重新运行SetItemsSource。
有人能看到什么,我需要做的就是我的自定义组合框唤醒和使用,如果它在XAML覆盖真实提供的SelectedValuePath?在我的SelectedValue绑定业务对象中调整属性设置器中的值不是一个选项。
这里的XAML如何查找我的表单中组合框:
<c:CustomComboBox Key1="0" Key2="8099" SelectedValuePath="Code3" SelectedValue="{Binding Thing}"/>
编辑:我只是跑在我的代码窥探和它说我SelectedValuePath是代码...它不会出现曾经被设置为Code3 ... Zuh?
是的,这是很臭的代码,但它也是示例代码,以避免粘贴我的整个应用程序。 – opedog 2010-03-08 23:41:05
(这是8字节和6,而不是4字节和3,顺便说一下)。 – 2010-03-09 15:29:30
好的,澄清我的意思是字符而不是字节。 – opedog 2010-03-09 21:57:57