【发布时间】:2017-06-12 22:40:57
【问题描述】:
如果在 datagrid 中没有选择任何内容,我正在尝试禁用 xaml 中的按钮,但它不起作用,我不知道为什么。
这是我的 xaml 代码:
<DataGrid IsReadOnly="True" x:Name="datagrid" ItemsSource="
{Binding Path=Notes, UpdateSourceTrigger=PropertyChanged}"
IsSynchronizedWithCurrentItem="True" HorizontalAlignment="Left"
Margin="0,39,0,0" VerticalAlignment="Top" Height="175" Width="300" AutoGenerateColumns="False">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="FontSize" Value="14"/>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Title" Binding="{Binding Title}"/>
<DataGridTextColumn Header="Content" Binding="{Binding Content}"/>
</DataGrid.Columns>
</DataGrid>
<Button Content="Edit" HorizontalAlignment="Left" Margin="218,9,0,0" VerticalAlignment="Top" Width="70" Height="25"
Command="{Binding editCommand}">
<Button.Style>
<Style TargetType="Button">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=datagrid, Path=SelectedItem}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource multiCloner}">
<Binding Path="SelectedItem" ElementName="datagrid"/>
</MultiBinding>
</Button.CommandParameter>
</Button>
如果有人能帮忙,我将不胜感激。
编辑:我使用的是 MVVM,所以没有代码隐藏。 显然,数据网格中的第一项总是自动选择,这就是为什么按钮总是启用但我仍然不知道我做了什么让第一项总是被选中。
【问题讨论】:
-
您能否更具体地说明它是如何“不工作”的?您是否确认 dataGrid.SelectedItem 实际上为 null?
-
好吧,我刚刚检查了它,即使我没有点击任何东西,但第一个项目总是自动被选中。有办法改变吗?