「Person」タイプのオブジェクトのObservablecollectionをリストボックスにバインドするWindowsWPFアプリケーションがあります。人物はテンプレートを介して表示され、このテンプレートは各人物の「エキスパンダー」を生成します(つまり、「Mr.Xの詳細を参照」)。エクスパンションでは、バックグラウンドで何かを実行したい(したがって、イベントハンドラー「Expander_Expanded」を追加しますが、どのエクスパンダーが展開されたかを記憶するプログラムも必要です。つまり、人の「名前」をに渡します。イベント。似たような質問をいくつか見つけましたが、答えがよくわかりませんでした...
また、言語アーキテクチャに精通している人が、言語が次の最も論理的な解決策を許可しない理由を説明できるかもしれません。人のクラスにプロパティを追加する
public ExpanderName {get{return "Expander_"+this.Name;}}
次に、エキスパンダーの名前をこれにバインドします。
<Expander Name="{Binding ExpanderName}" Expanded="Expander_PersonDetails">
次に、「sender.name」から復元することで、イベントハンドラーで展開された人の名前にアクセスできます。コンパイラーは、UIcontrol要素の「名前」をバインドできないと言っています。なんで?
前もって感謝します!