DataGrid с кнопкой столбца. Как привязать свойство IsEnabled кнопки к значению другого столбца? - PullRequest
0 голосов
/ 18 марта 2020
<DataGrid x:Name="myDataGrid" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding myColumnName}" Header="Should Button In Second Column Be Enabled" IsReadOnly="True"/>
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button>
                                <Button.Style>
                                    <Style>
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridRow}}, Path=myColumnName}" Value="No">
                                                <Setter Property="IsEnabled" Value="False" />
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </Button.Style>
                                DoStuff
                            </Button>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

            </DataGrid.Columns>
        </DataGrid>

Для каждой строки я хочу, чтобы кнопка была отключена, если Column1 содержит «Нет», и включена, если она содержит что-либо еще.

Выше моя неудачная попытка XAML - intellisense говорит мне

<Setter Property="IsEnabled"

не разрешается должным образом.

Что я здесь не так делаю и что я должен делать вместо этого, чтобы получить желаемый результат?

1 Ответ

0 голосов
/ 18 марта 2020

Измените свой Xaml таким образом.

<DataGrid x:Name="myDataGrid" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding myColumnName}" Header="Should Button In Second Column Be Enabled" IsReadOnly="True"/>
                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button>
                                <Button.Style>
                                    <Style>
                                        <Setter Property="IsEnabled" Value="True"/>
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding myColumnName}" Value="No">
                                                <Setter Property="IsEnabled" Value="False" />
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </Button.Style>
                            </Button>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
...