Wpf DataGrid行选择不会触发属性更改
我有一个datagrid,当我选择一行时,绑定到所选项目的属性将被正确调用,但如果我再次单击同一行,则不会调用属性changed。 知道为什么吗? ItemsSource对象实现INotifyPropertyChaqnged,VM中的属性是标准的,正如我所说的,当我取消选择一行时,它不起作用。 这是我的XAML:Wpf DataGrid行选择不会触发属性更改,wpf,datagrid,selecteditem,propertychanged,Wpf,Datagrid,Selecteditem,Propertychanged,我有一个datagrid,当我选择一行时,绑定到所选项目的属性将被正确调用,但如果我再次单击同一行,则不会调用属性changed。 知道为什么吗? ItemsSource对象实现INotifyPropertyChaqnged,VM中的属性是标准的,正如我所说的,当我取消选择一行时,它不起作用。 这是我的XAML: <DataGrid CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderC
<DataGrid
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserReorderColumns="False"
GridLinesVisibility="None"
ItemsSource="{Binding AllChannelsRecordingSchedule,UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding SelectedChannelRecordingServer,UpdateSourceTrigger=PropertyChanged}"
AlternatingRowBackground="{StaticResource VigilantDataGridAlternatingRowColor}"
ColumnHeaderStyle="{StaticResource VigilantDataGridColumnHeader}"
RowBackground="White"
RowHeaderWidth="0"
AutoGenerateColumns="False"
FontFamily="Arial"
FontSize="14"
MaxWidth="805"
Height="350"
Background="White">
<DataGrid.Resources>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
</Style>
</DataGrid.Resources>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="#000" />
</Trigger>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" Value="Blue" />
<Setter Property="Foreground" Value="#000" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn
Header="{x:Static p:Resources.SystemRecordingSchedule_ServerName}"
Width="*"
IsReadOnly="True"
Binding="{Binding ServerName,UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn
Header="{x:Static p:Resources.SystemRecordingSchedule_ServerIP}"
MinWidth="120"
IsReadOnly="True"
Binding="{Binding ServerIP,UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn
Header="{x:Static p:Resources.SystemRecordingSchedule_ChannelName}"
MinWidth="150"
IsReadOnly="True"
Binding="{Binding ChannelName,UpdateSourceTrigger=PropertyChanged}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTemplateColumn
Header="00:00 06:00 12:00 18:00 24:00"
MinWidth="350"
IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<userControls:SchedulerControl
FullRecordingSchedule="{Binding FullRecordingSchedule,UpdateSourceTrigger=PropertyChanged}"
IsEnabled="False"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
谢谢首先修复代码示例格式 没有人想向右看 您认为第二次单击取消选择是无效的 属性为SelectedItem而不是SelectedUnsectEdItem 第二次单击只需重新选择,因为它已经被选中,所以UI不会触发任何动作 即使您更改了一个选择事件,它也不会在第二次选择时触发
如果您想要选择/取消选择,您可以使用复选框列我确切地知道SelectedItem是如何工作的,问题是如果您查看DataGrid触发器,当item IsSelected属性设置为true时,您会看到它将行的背景颜色设置为蓝色,并且该触发器工作。DataGrid的SelectedItem属性和DataGridRow的IsElected属性没有同步,这让我觉得有点奇怪。您的问题和评论并没有向我表明您知道SelectedItems是如何工作的。显然您没有答案,而且还触发了一些事件并导致行背景发生变化。所以颜色发生了变化?因此,假设第二次单击应该取消选择,即使它没有取消选择,并且这不是记录的行为。逻辑性很强。我是在评论中这么说的,还是这正是你想读的?我只是写了一些事件被触发并导致行背景发生变化。。。