2013-06-14 5 views
3

Я делаю приложение WPF с MVVM Light, и у меня есть следующий TreeView:Получить SelectedItem из WPF Treeview

<TreeView x:Name="TreeView" 
        Grid.Column="2" 
        HorizontalAlignment="Left" Height="463.481" VerticalAlignment="Top" Width="263" 
        ItemsSource="{Binding PackageView}" Margin="0,5.657,0,0" Grid.Row="1" Grid.RowSpan="2" Grid.ColumnSpan="2"> 
      <i:Interaction.Triggers> 
       <i:EventTrigger EventName="SelectedItemChanged"> 
        <i:InvokeCommandAction Command="{Binding Command}" 
        CommandParameter="SelectedItemChanged"/> 
       </i:EventTrigger> 
      </i:Interaction.Triggers> 
      <TreeView.ItemContainerStyle> 
       <Style TargetType="{x:Type TreeViewItem}"> 
        <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> 
        <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> 
        <Setter Property="FontWeight" Value="Normal" /> 
        <Style.Triggers> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter Property="FontWeight" Value="Bold" /> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </TreeView.ItemContainerStyle> 

Когда выбор меняется, я хочу, чтобы отправить вновь выбранный элемент в качестве аргумента команда. Есть какой-либо способ сделать это? У меня создалось впечатление, что вы можете сделать это с помощью EventToCommand, но когда я пытаюсь их использовать, он говорит, что они больше не поддерживаются в версии 4, и я не могу найти подходящее обходное решение.

Спасибо.

ответ

6

При указании CommandParameter="SelectedItemChanged" вы указываете параметр как string.

Если вы хотите передать SelectedItem в качестве параметра, вы должны сделать это следующим образом: CommandParameter="{Binding ElementName=TreeView,Path=SelectedItem}".

Смежные вопросы