wpf - 在选定的数据网格上显示一个按钮

标签 wpf button datagrid visibility selected

我有一个带有行数的数据网格。每行都有作为 DeleteRow 按钮。只有被选中的行应该有这个按钮可见。在我看来,可能至少有两种解决方案:
a) 将按钮的 Visibility-property 绑定(bind)到包含 DatGridRow 的 IsSelected-property
或者
b)使用按钮中的触发器仅在选择包含行时才可见。

这是我为选项 b 提供的代码,它不起作用:

<DataGridTemplateColumn Width="50">
<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <Button Content="X" Tag="{Binding}" Click="DeletRow_Click" Visibility="Hidden">
            <Button.Style>
                <Style x:Name="ButtonVisibility">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow}},Path=IsSelected}" Value="True">
                            <Setter Property= "Button.Visibility" Value="Visible"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

这可能真的很容易,但我一直盯着它看,现在让我眼花缭乱:S
谢谢

最佳答案

它不起作用,因为 Dependency Property Value Precedence .您不能更改 Style 中的本地值.移动Visibility.Hidden进入 Style它会起作用。

<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <Button Content="X" Tag="{Binding}" Click="DeletRow_Click">
            <Button.Style>
                <Style x:Name="ButtonVisibility">
                    <Setter Property="Button.Visibility" Value="Hidden"/>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsSelected}" Value="True">
                            <Setter Property="Button.Visibility" Value="Visible"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

关于wpf - 在选定的数据网格上显示一个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12302031/

相关文章:

android - Android 上的横向按钮菜单

c# - 如果网格不在屏幕上,WPF DataGrid ScrollIntoView 显然什么都不做

wpf - WPF 中 DataGrid 的多级列标题

java - 按钮文本垂直对齐在 Android 中关闭

swift - 如何让函数中的这个按钮用 Swift 打开另一个 View Controller ?

java - 如何在 J2EE/JSP 中的 MVC2 架构中创建可编辑的数据网格

wpf - 鼠标单击扩展器+在 ListView 中选择项目问题

wpf - WPF 不使用 Windows (pl.) for Controls 有什么影响?

c# - 使用调度程序更新 WPF 进度条

c# - 列表框内的统一网格