ツリービューとデータグリッドの間に関係を作成したいのですが、SearchGrid メソッドを呼び出す SelectedTestElement というメソッドがあります。
ビューモデル:
public TestElementViewModel SelectedTestElement
{
set
{
if (_selectedTestElement == value) return;
this._ selectedTestElement = value;
SearchGrid(value.Id, new List< TestElementViewModel>( testElementViewModel.GetAllTreeNodes()));
}
get
{
return this._ selectedTestElement;
}
}
このプロパティを xaml TreeView にバインドしたい
<TreeView Margin="644,137,6,6" Grid.RowSpan="2" ItemsSource="{Binding MessageElements, Mode=TwoWay}" TreeViewItem.Selected="{Binding SelectedTestElement, Mode=TwoWay}" />
treeView.Selected は、ツリービューでプロパティを呼び出すための最良の方法ですか?
編集:
ビューモデル:
ツリーノードを選択します。つまり、SelectedTreeNode は TreeView.SelectedItem にバインドされます
public TreeNodeViewModel SelectedTreeNode
{
set
{
if (_selectedTreeNode== value) return;
this._selectedTreeNode = value;
//search the treenode id
SearchGrid(value.Id, TestFieldVModel.GetAllTestField());
}
get
{
return this._selectedTreeNode;
}
}
// 検索を実行し、一致する ID グリッドを強調表示します
public void SearchGrid(int id, ObservableCollection<TestFieldViewModel> msgField)
{
foreach (var c in msgField)
{
c.DisplayColor = c.Id == id ? Brushes.DarkOrange : Brushes.Black;
c.DisplayFont = c.Id == id ? FontWeights.Bold : FontWeights.Normal;
// SearchGrid(id, c.GetAllTestField());
}
}
XAML:
<TreeView Margin="644,137,6,6" Grid.RowSpan="2" ItemsSource="{Binding TreeNodes, Mode=TwoWay}" TreeView.SelectedItem ="{Binding Path= SelectedTreeNode, Mode=TwoWay}" >