【问题标题】:WPF bind to datagrid from templateWPF 从模板绑定到数据网格
【发布时间】:2011-04-24 08:44:57
【问题描述】:

我是 wpf 的新手。我有一个 DataGrid 表单 wpftoolkit,只有在选择行并且记录不是最后一个(新记录项)时,我才需要在模板中显示按钮

<dg:DataGrid AutoGenerateColumns="False" DockPanel.Dock="Top"   
                 ItemsSource="{Binding Source={StaticResource Entries}}"  
                 Name="dataGrid"  >

                <dg:DataGrid.Columns>
                    <dg:DataGridTextColumn Header="Term" Width="2*" Binding="{Binding Path=Term}"/>
                    <dg:DataGridTextColumn Header="Definition" Width="5*" Binding="{Binding Path=Definition}"/>

                    <dg:DataGridTemplateColumn Header="">
                        <dg:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Button Click="btnRemove_Click">Remove</Button>
                            </DataTemplate>
                        </dg:DataGridTemplateColumn.CellTemplate>
                    </dg:DataGridTemplateColumn>

                </dg:DataGrid.Columns>
            </dg:DataGrid>

如何将 Visibility 属性与数据网格绑定?

我的不完全解决方案在未选择行时禁用按钮:

<dg:DataGridTemplateColumn >
                        <dg:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Button Content="Remove" Click="btnRemove_Click"   >
                                    <Button.Style>
                                        <Style TargetType="{x:Type Button}"  >
                                            <Setter Property="Visibility" Value="Hidden" />
                                            <Style.Triggers>
                                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dg:DataGridRow}}, Path=IsSelected}" Value="True">
                                                    <Setter Property="Visibility" Value="Visible" />
                                                </DataTrigger>
                                            </Style.Triggers>
                                        </Style>
                                    </Button.Style>
                                </Button>
                            </DataTemplate>
                        </dg:DataGridTemplateColumn.CellTemplate>
                    </dg:DataGridTemplateColumn>

【问题讨论】:

    标签: c# wpf binding


    【解决方案1】:

    一种解决方案是为绑定到 DataRow 的 Visibility 属性编写一个 ValueConverter。在 ValueConverter 检查它是否是一个新行,然后将 Visibility 设置为 Hidden 否则 Visible。

    【讨论】:

    • 我如何检查这一行是否是新的。我没有找到表明该行是新行的属性。如果我知道这一点,我会写一个多数据触发器。
    • 您可以使用DataRow.RowState 属性来检查DataRowState 是否为DataRowState.Added。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2014-08-23
    • 1970-01-01
    • 2011-09-28
    • 2010-11-15
    相关资源
    最近更新 更多