WPF привязка к сетке данных из шаблона - PullRequest
1 голос
/ 12 октября 2010

Я новичок в 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>

1 Ответ

0 голосов
/ 12 октября 2010

Одним из решений является написание ValueConverter для свойства Visibility, которое привязано к DataRow. В проверке ValueConverter проверьте, является ли его новая строка, а затем установите для параметра Visibility значение Hidden else Visible.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...