【问题标题】:WPF DataGrid SelectedItem Command not firingWPF DataGrid SelectedItem 命令未触发
【发布时间】:2016-10-22 15:05:43
【问题描述】:

我有一个关于 wpf datagrid 和 DatagridTemplateColumn 行为的问题。

<DataGrid
ItemsSource="{Binding Items, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
inf:MultiSelectorBehaviours.SynchronizedSelectedItems="{Binding SelectedItems, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectionUnit="FullRow" SelectionMode="Extended">
<DataGrid.Columns>
    <DataGridTemplateColumn.CellTemplate>
         <DataTemplate>
               <Button Background="Transparent" 
                      BorderThickness="0" 
                      BorderBrush="Transparent" 
                      Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.ExecuteCommand}" CommandParameter="{Binding}"  />
           </DataTemplate>
       </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
 </DataGrid.Columns>

我的问题是:当我按下 DataGridTemplateColumn 中的按钮并且未选择行时,我的模型中会触发命令。但是当首先选择我的行时,不会触发命令。有人知道为什么吗?

感谢您的帮助...

编辑:当我将 SelectionMode 从“扩展”更改为“单”时,它按预期工作。但我必须使用“扩展”...

【问题讨论】:

  • 我认为你需要 &lt;DataTemplate.Triggers&gt;&lt;EventTrigger&gt; 来做同样的事情。您当前仅处理按钮单击并将命令传递给查看模型。您可能需要整行点击。
  • 你能再解释一下吗?因为我什至无法理解为什么在未选择行时会触发命令...
  • 这是因为当您单击按钮时,会触发按钮命令。当您选择行时,您为什么期望按钮命令触发?它不会被解雇。做一件事。为 PreviewMouseDown 创建一个数据模板触发器并为按钮和行创建句柄。它应该做的工作。如果有任何问题,请尝试恢复。
  • 我们说的一样吗?我只希望在按下按钮时触发命令。当未选择行时,这工作正常。当我先选择行然后按下按钮时,没有任何反应......

标签: wpf mvvm


【解决方案1】:

在您的数据网格上尝试 IsSynchronizedWithCurrentItem="True"。这是出现“SelectedItem”相关问题的常见原因。否则,您应该提供更完整的代码示例来解决此问题。

【讨论】:

    猜你喜欢
    • 2019-04-05
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2021-01-04
    • 2014-05-02
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多