我试图让所选TreeView节点内部视图模型获取TreeView控件的SelectedItem内部视图模型
里面的XAML
<Grid>
<TreeView ItemsSource="{Binding TreeViewModel.TreeData}">
<TreeView.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding GroupTables}" DataType="{x:Type tbl:StaticTablesGroup}">
<Label Content="{Binding Name}"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type tbl:GroupTable}">
<Label Content="{Binding Name}"/>
</DataTemplate>
</TreeView.Resources>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
</Grid>
内VieModel
public class TreeTablesViewModel : ViewModelBase
{
private TablesXML _tables;
public TreeTablesViewModel()
{
_tables = Deserialize.GuymasterXml();
}
public List<StaticTablesGroup> TreeData
{
get
{
return _tables.StaticTablesGroups;
}
set
{
_tables.StaticTablesGroups = value;
OnPropertyChanged("TreeData");
}
}
}
,最后的数据类
[XmlRoot("Tables")]
public class TablesXML
{
public TablesXML()
{
StaticTablesGroups = new List<StaticTablesGroup>();
}
[XmlArray("StaticGroups")]
[XmlArrayItem("StaticGroup", typeof(StaticTablesGroup))]
public List<StaticTablesGroup> StaticTablesGroups { get; set; }
}
public class StaticTablesGroup
{
public StaticTablesGroup()
{
GroupTables = new List<GroupTable>();
}
[XmlAttribute("Name")]
public string Name { get; set; }
//[XmlArray("StaticGroup")]
[XmlElement("Table", typeof(GroupTable))]
public List<GroupTable> GroupTables { get; set; }
}
public class GroupTable
{
[XmlElement("TableName")]
public string Name { get; set; }
[XmlElement("TableTag")]
public string Tag { get; set; }
private bool _isSelected;
public bool IsSelected
{
get { return _isSelected; }
set
{
if (_isSelected != value)
{
_isSelected = value;
}
}
}
}
选择Treeview节点后,在GroupTable或StaticTablesGroup中引发IsSelected。 如何获取TreeTablesViewModel中的选定节点?
谢谢
后面添加代码,谢谢您的答复。我将Selecteditem属性添加到TreeTablesViewModel:private object _selectedItem; 公共对象SelectedItem { 得到 { return _selectedItem; } set { _selectedItem = value; OnPropertyChanged(“SelectedItem”); } }但是,viewModel内部的SelectedItem从不执行。我究竟做错了什么。 – Vadim
在XAML: –
Vadim
做你试图将一个破发点的SelectedItemChanged处理程序中的行为,看是否该事件得到提高? – Bruno