wpf - 如何在 DataGridTextColumn 的文本单击上执行命令
问题描述
我有一个包含多列的 DataGrid。一列应该用作参考,但现在它的行为就像一个虚拟文本。如何通过使用 MVVM 模式(无事件)单击此文本来执行任何命令?
<DataGridTextColumn
Binding="{Binding RecipeName}"
Header="Recipe"
Width="1.5*"/>
解决方案
一种方法是通过重新定义列的 CellTemplate 来使用单元格中的按钮。
这是一个例子:
<DataGrid ItemsSource="{Binding Items}">
<DataGrid.Columns>
<!-- Your first column -->
<DataGridTemplateColumn Header="Recipe">
<DataGridTemplateColumn.CellTemplate>
<!-- Let's redefine the cell template for our column -->
<ItemContainerTemplate>
<Button Content="{Binding RecipeName}" Command="{Binding MyCommand}">
<!-- Here we remove the button's default templating by overriding it -->
<Button.Template>
<ControlTemplate TargetType="Button">
<ContentPresenter Content="{TemplateBinding Content}" />
</ControlTemplate>
</Button.Template>
</Button>
</ItemContainerTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
推荐阅读
- bash - MacOS命令行上bash脚本的参数无效
- grpc - 如何知道 SERVER 端的 gRPC 函数处理程序中连接的真实地址(哪个 NIC)?
- batch-file - 尝试从远程计算机上的另一个 bat 文件运行 bat 文件
- javascript - 渲染错误:“TypeError:无法读取未定义的属性 'id'”
- flutter - 颤振:如何从 Firestore 中读取 geohash 和 geopoint
- node.js - Angular Universal Server Side Rendering (SSR) res.render 未加载
- javascript - 从另一个页面 React Native 导入和使用变量
- python-3.x - “charmap”编解码器无法解码位置 67 中的字节 0x81:字符映射到
- linux-capabilities - 哪些能力可以打开/proc/pid/ns/net?
- swift - 创建约束,其中只有尾随锚可以收缩或扩展