我想在我的treeview和datagrid之间创建一个关系 我有一个名为SelectedTestElement的方法,它调用SearchGrid方法
视图模型:
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是在树视图中进行属性调用的最佳方法吗?
编辑:
视图模型:
我选择了一个treenode,即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}" >
答案 0 :(得分:0)
这不起作用,您尝试将事件绑定到视图模型上的属性。
我建议您使用TreeView.SelectedItem
属性并将其绑定到视图模型上接受TreeViewItem
的新属性。然后修改您的SelectedTestElement
属性以查看新选择的项属性并确定要返回的相应TestElementViewModel
,或者您可以将新选中的项属性的set
设置为`this ._selectedTestElement'直接。