Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wpf树视图所选项目_Wpf_Treeview - Fatal编程技术网

wpf树视图所选项目

wpf树视图所选项目,wpf,treeview,Wpf,Treeview,我有一个树视图: <TreeView> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Path=TucActivity}"> <TextBlock> <TextBlock.Text> <MultiBinding StringFormat="{}{0} {1}">

我有一个树视图:

<TreeView>
  <TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Path=TucActivity}">
      <TextBlock>
        <TextBlock.Text>
          <MultiBinding StringFormat="{}{0} {1}">
            <Binding Path="DisplayedStartTime"></Binding>
            <Binding Path="Name"></Binding>
          </MultiBinding>
        </TextBlock.Text>
      </TextBlock> 
      <HierarchicalDataTemplate.ItemTemplate>
        <DataTemplate>
          <TextBlock Text="{Binding Path=Message}" />
        </DataTemplate>
      </HierarchicalDataTemplate.ItemTemplate>
    </HierarchicalDataTemplate>
  </TreeView.ItemTemplate>
</TreeView>
每次更新
((App)Application.Current).TucOC
时,我都希望这样 所选项目(以及焦点)将是可观察集合中的项目

我想在一个地方做,因为
((App)Application.Current).TucOC
是 在代码中的多个位置更新


最好的选择是什么?

如果您使用的是这样的开发模式,我会在ViewModel类上创建一个属性,该属性属于ObservableCollection中保存的类型,以保存treeview源的当前选定项。看起来是这样的:

private object _selectedTuc;
public object SelectedTuc
{
    get
    {
        return _selectedTuc;
    }
    set
    {
        _selectedTuc = value;
        OnPropertyChanged("SelectedTuc");
    }
}
然后,在树视图中,将此属性绑定到树视图的SelectedItem:

<TreeView ItemsSource="{Binding TucOC, Mode=OneWay}" SelectedItem="{Binding SelectedTuc, Mode=TwoWay}">...</TreeView>
。。。
请注意,在SelectedItem的绑定上,您指定了一个双向模式值-这允许从UI更新SelectedTuc属性,以及在SelectedTuc属性更改时更新UI


如果您没有使用MVVM或类似的工具,则需要创建一个实用方法,每当ObservableCollection中的选定项或索引发生更改时,该方法都会更新TreeView的SelectedItem。但是,我不建议这样做。

您是如何避免此错误的:“SelectedItem”属性是只读的,无法从标记中设置。此问题已回答多次,并且
<TreeView ItemsSource="{Binding TucOC, Mode=OneWay}" SelectedItem="{Binding SelectedTuc, Mode=TwoWay}">...</TreeView>