【问题标题】:GridView Header ClickGridView 标题点击
【发布时间】:2017-03-29 04:45:23
【问题描述】:

我想弄清楚如何将网格视图标题单击指向我的视图模型

 <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>

有什么想法吗?

【问题讨论】:

    标签: c# wpf gridview


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

      您需要添加 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)
          {
      
          }
      

      【讨论】:

        猜你喜欢
        • 2014-08-31
        • 2018-06-30
        • 1970-01-01
        • 2016-12-12
        • 2013-03-03
        • 1970-01-01
        • 2013-01-11
        • 2010-09-24
        • 1970-01-01
        相关资源
        最近更新 更多