DataGrid가 있는데 행을 선택하면 선택한 항목에 바인딩 된 속성이 올바르게 호출되고 있지만 동일한 행을 다시 클릭하면 (선택 취소) 속성이 변경된 경우 호출되지 않습니다. 이유가 무엇입니까? ItemsSource 객체는 INotifyPropertyChaqnged를 구현하며 VM의 속성은 표준이며, 행을 선택 해제 할 때 작동하지 않는다고 말한 것처럼 말입니다. 여기 내 XAML입니다 :
없음 하나는 두 번째 클릭의 선택 취소가 유효하지 않음을 오른쪽으로DataGrid 행 선택으로 인해 속성이 변경되지 않는다
당신의 가정을보고 싶어 서식 코드 예제를 수정
<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>
감사
내가 정확히 알고있는 CheckBox의 열을 사용할 수있는 선택/선택 해제를 위해 무언가를 원하는 경우에 때 항목 트리거는 파란색으로 색상 행의 배경 볼 것이다 IsSelected 속성이 true로 설정되고 해당 트리거가 작동합니다. DataGrid의 SelectedItem 속성과 DataGridRow의 IsSelcted가 동기화되지 않는다고 조금 이상하게 보입니다. – user1531186
당신은 질의와 논평이 SelectedItems의 작동 방식을 알고 있음을 알려주지 않습니다. – Paparazzi
분명히 대답이없고 일부 이벤트가 발생하고 행 배경이 변경됩니다. – user1531186