コンボボックスの表示値を、そのバインディングをキーとして使用して表示したい値を検索しようとしています。私はそれを働かせるように見えない。Silverlightコンボボックスバインディングと値コンバーター
私のユーザーコントロールのdatacontextはMyObjectです。 MyObjectには、 "MyReferencedObject"のIDである "MasterDrawerId"というプロパティがあります。
私の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;
}
}
I私の "Convert"メソッドの最初の行にブレークポイントを設定する私のコンバータとそれは決してヒットしません。代わりに
masterSiteComboBox.SelectedItem = binding;
の
。 Thx :) –