2017-03-29 10 views
0

クリックGridViewのヘッダー私はグリッドビューヘッダーが私のViewModelにクリックしてポイントする方法を把握しようとしています

<ListView ItemsSource="{Binding UserProfileData}" GridViewColumnHeader.Click="Handle_Click"> 
     <ListView.View> 
       <GridView> 
        <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="User ID"/> 
        <GridViewColumn DisplayMemberBinding="{Binding LastUsed}" Header="Last Loaded"/> 
        <GridViewColumn DisplayMemberBinding="{Binding IsLoaded}" Header="Logged In"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 

GridViewColumnHeader.Click =「Handle_Clickは、」私のMainWindow.xaml.csにそれをプッシュしますが、私はしたいですクリックを私のMainWindowのDataContextに移動させるには

<Window.DataContext> 
    <vm:MainWindowViewModel/> 
</Window.DataContext> 

どのようなアイデアですか?

答えて

1

GridViewColumnHeaderCommandプロパティをビューモデルのソースプロパティICommandにバインドするスタイルを使用できます。次に、コマンドに引数としてヘッダstringを渡すことができます。

<ListView x:Name="test" ItemsSource="{Binding UserProfileData}"> 
    <ListView.Resources> 
     <Style TargetType="GridViewColumnHeader"> 
      <Setter Property="Command" Value="{Binding YourCommandProperty}" /> 
      <Setter Property="CommandParameter" Value="{Binding Content, RelativeSource={RelativeSource Self}}" /> 
     </Style> 
    </ListView.Resources> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="User ID"/> 
      <GridViewColumn DisplayMemberBinding="{Binding LastUsed}" Header="Last Loaded"/> 
      <GridViewColumn DisplayMemberBinding="{Binding IsLoaded}" Header="Logged In"/> 
     </GridView> 
    </ListView.View> 
</ListView> 
+0

完全に動作します。ありがとうございました。 –

0

あなたは2つのアセンブリの参照を追加する必要があります。

System.Windows.Interactivity 
Microsoft.Expression.Interactions 

は、次の名前空間を追加します。

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" 

XAML:ビューモデルで

<ListView ItemsSource="{Binding UserProfileData}"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn DisplayMemberBinding="{Binding Name}"> 
        <GridViewColumnHeader Content="User ID"> 
         <i:Interaction.Triggers> 
          <i:EventTrigger EventName="Click"> 
           <ei:CallMethodAction TargetObject="{Binding}" MethodName="OnClick"/> 
          </i:EventTrigger> 
         </i:Interaction.Triggers> 
        </GridViewColumnHeader> 
       </GridViewColumn> 

       <GridViewColumn DisplayMemberBinding="{Binding LastUsed}"> 
        <GridViewColumnHeader Content="Last Loaded"> 
         <i:Interaction.Triggers> 
          <i:EventTrigger EventName="Click"> 
           <ei:CallMethodAction TargetObject="{Binding}" MethodName="OnClick"/> 
          </i:EventTrigger> 
         </i:Interaction.Triggers> 
        </GridViewColumnHeader> 
       </GridViewColumn> 

       <GridViewColumn DisplayMemberBinding="{Binding IsLoaded}"> 
        <GridViewColumnHeader Content="Logged In"> 
         <i:Interaction.Triggers> 
          <i:EventTrigger EventName="Click"> 
           <ei:CallMethodAction TargetObject="{Binding}" MethodName="OnClick"/> 
          </i:EventTrigger> 
         </i:Interaction.Triggers> 
        </GridViewColumnHeader> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 
    </ListView> 

、以下の方法置く:

public void OnClick(object sender, RoutedEventArgs e) 
    { 

    } 
関連する問題