我試圖通過使用其綁定作爲鍵來查找我想要顯示的值來轉換組合框的顯示值。我似乎無法得到它的工作。Silverlight與值轉換器的組合框綁定
我的用戶控件的datacontext是MyObject。 MyObject有一個屬性「MasterDrawerId」,它是「MyReferencedObject」的Id。
在我的應用程序的其他地方,可以通過我的App.xaml.cs的靜態屬性訪問「MyOtherObjects」的集合。 「MyReferencedObject」與「MyOtherObject」的Id具有外鍵關係。
我的組合框綁定到「MasterDrawerId」,這是傳遞到轉換器。 然後,我使用它作爲「MyReferencedObject」的查找來獲取「MyOtherObject」的外鍵ID以顯示該對象的名稱。
我知道這似乎令人困惑,但它基本上只是使用datacontext的屬性來做一個查找,並顯示在一個組合框中的位置的另一個對象的名稱。
這是我的代碼:
masterSiteComboBox.DisplayMemberPath = "Name";
Binding binding = new Binding("MasterDrawerId");
binding.Mode = BindingMode.TwoWay;
binding.Converter = new DrwIdToSiteConverter();
masterSiteComboBox.SelectedItem = binding;
masterSiteComboBox.ItemsSource = ListOfMyOtherObjects;
這裏是我的轉換代碼:
公共類DrwIdToSiteConverter:的IValueConverter { 公共DrwIdToSiteConverter() { }
public virtual object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
XferSite site = new XferSite();
foreach(XferUserDrawerPermissions perm in App.UserDrawerPermissions)
{
if (perm.DocumentTypeId.Match(value.ToString()))
{
site.Id = int.Parse(perm.SiteId);
site.Name = perm.SiteName;
break;
}
}
return site;
}
public virtual object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
}
我在我的「Convert」方法的第一行設置一個斷點o我的轉換器,它永遠不會被擊中。
就是這樣。 Thx :) – 2012-03-09 20:47:00