私はTreeView
を持っていて、それぞれTreeViewNode
は、そのTag
プロパティにオブジェクトを持っています。 treeviewのノードが選択されたら、DataGrid
に、リフレクションによって取得されたオブジェクトのすべてのフィールドの名前と値を入力します。私はwpfデータバインディングを使用してこれを行う方法を把握することはできません。単純なメソッドを使用してDataGrid
を正確にバインドする方法の例はほとんどなく、変換関数も使用しています。このデータをDataGridにバインドするにはどうすればよいですか?
internal static IEnumerable<Tuple<string, object>> GetFieldInfo(object o)
{
return
from FieldInfo info in o.GetType().GetFields()
select Tuple.Create(info.Name, info.GetValue(o));
}
とXAMLでツリービューとデータグリッド::私はこれまで持っているもの
は、私は単一のオブジェクトから必要なデータを取得するための方法である
<TreeView Name="objectList" />
<DataGrid Name="objectData" />
私ができます」 GetFieldInfo
メソッドとobjectData.ItemsSource
プロパティを使用して((TreeViewNode)objectList.SelectedItem).Tag
プロパティを取得するための適切なデータバインドの呪文を見つけてください。
を列とデータを自動生成可能性がありますが、私は、オブジェクトのすべてのフィールドをリストする必要があり、マスター/詳細は –
に近づくためにリフレクションを使用する必要はありません(オブジェクトは任意のタイプにすることができます)とグリッド内のフィールド値を使用します。反射を使わずに私はどうしたらいいですか? – thecoop
物事のカップル... TreeView.SelectedItemプロパティを使用して、Viewをかなり結合してデータをVieWModelに戻すので、Tagプロパティをスキップします。ユーザーが新しいノードを選択すると、タグからデータを抽出するのではなく、ViewModelを介してDataGridが更新されます。どのようなデータをモデルから取り出すにしても、モデル自体に値を返すために何かを置くことになります。おそらくそれを基本クラス/インタフェースで抽象化してください(そうした努力のために述べたとおり、まだ反映が必要です)。 –