我想从我的TreeView选择的项目,但有一些问题。 我下面MVVM archetecture。 我的视图模型包含一个类,这是在我的模型的集合。 因此,我已绑定的TreeView的的ItemSource与该集合。 我想我的TreeView的selectedItem属性绑定到绑定的集合的一个项目。 我怎么做。 下面是的SelectedItem和IsSelected属性的代码。
private static sourceData _selectedItem = null;
/// <summary>
/// Selected Item in the tree
/// </summary>
public static sourceData SelectedItem
{
get { return _selectedItem; }
set
{
if (_selectedItem != value)
{
_selectedItem = value;
}
}
}
private bool _isSelected;
/// <summary>
/// Get/Set for Selected node
/// </summary>
public bool IsSelected
{
get { return _isSelected; }
set
{
if (_isSelected != value)
{
_isSelected = value;
if (_isSelected)
{
SelectedItem = this;
OnPropertyChanged("IsSelected");
}
}
}
}
/// <summary>
/// Property changed event
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Property changed event handler
/// </summary>
/// <param name="propertyName"></param>
protected virtual void OnPropertyChanged(string propertyName)
{
var handler = this.PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
当我调试这个,INT SelectedItem = this;
“这个”指针包含到我的TreeView的是绑定的集合。 我需要有一个SelectedDataSource,这样我可以把它分配给选定的项目。 我怎样才能让我的树视图返回我selectedItem属性的集合?
据透露,这是我的TreeView XAML代码
<TreeView Margin="5,0,0,0" ItemsSource="{Binding SourceData}" Width="390">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding DataContext.IsSelected, Mode=TwoWay, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu Name="contextMenu" DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}" >
<MenuItem Name="menuItem" Header="Rename" Command="{Binding RenameCommand}" />
</ContextMenu>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
PS:如果我写在我的模型上面的代码中,我得到的一切工作完全正常。 但我不能就在模型上面的代码,它必须是在VM。
任何帮助都感激不尽。
谢谢