在我們的應用中有一個非常大的數據集,充當我們的數據字典組合框列表等。這些數據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