3

TreeView から SelectedItem (ヘッダーではなく) を取得する方法を知っている人はいますか?
これが私のコードです:

<TreeView Name="treeView1" DataContext="{Binding Path=PresentationsViewModel}" Grid.Column="1" >
    <TreeViewItem IsExpanded="True" Header="Objects-A-List" DisplayMemberPath="Name" ItemsSource="{Binding Path=MyItem.ListA}"></TreeViewItem>
    <TreeViewItem IsExpanded="True" Header="Objects-B-List" DisplayMemberPath="Name" ItemsSource="{Binding Path=MyItem.ListB}"></TreeViewItem>
    <TreeViewItem IsExpanded="True" Header="Objects-C-List" DisplayMemberPath="Name" ItemsSource="{Binding Path=MyItem.ListC}"></TreeViewItem>
</TreeView>

3 つの異なるオブジェクト タイプを含む 3 つの異なるリストがあることに注意してください。次のようなものがあると、とても助かります。

public Object SelectedObject
{
    set { _selectedObject = value; RunMyMethod(); RaisePropertyChanged("SelectedObject"); }
}  
4

4 に答える 4

6

わかりました、これは古い質問であり、おそらく死んでいることは知っていますが、チャーリーが正しいと言っています。これはコードでも使用できるものです。たとえば、次のことができます。

<ContentPresenter Content="{Binding ElementName=treeView1, Path=SelectedItem}" />

選択したアイテムが表示されます。それにスタイルまたは DataTemplate を追加するか、表示しようとしているオブジェクトにデフォルトの DataTemplate を使用できます。

于 2010-07-05T14:33:08.247 に答える
5

ステップ 1 NuGet をインストールします。Install-Package System.Windows.Interactivity.WPF

ステップ 2 Window タグに次を追加します。xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

ステップ 3 TreeView に次を追加します。

    <TreeView Name="treeView1" ... >
         <i:Interaction.Triggers>
              <i:EventTrigger EventName="SelectedItemChanged">
                   <i:InvokeCommandAction Command="{Binding SelectedItemChangedCommand}" CommandParameter="{Binding ElementName=treeView1, Path=SelectedItem}"/>
              </i:EventTrigger>
          </i:Interaction.Triggers>
   ...
   </TreeView>

ステップ 4 ViewModel に次を追加します。

        private ICommand _selectedItemChangedCommand;
        public ICommand SelectedItemChangedCommand
        {
            get
            {
                if (_selectedItemChangedCommand == null)
                    _selectedItemChangedCommand = new RelayCommand(args => SelectedItemChanged(args));
                return _selectedItemChangedCommand;
            }
        }

        private void SelectedItemChanged(object args)
        {
            //Cast your object
        }
于 2015-09-29T13:23:44.493 に答える
2

あなたの質問を誤解しているかもしれませんが、

treeView1.SelectedItem

動作するはずです。

于 2009-08-06T15:46:18.540 に答える