Tôi đoán rằng bạn thực sự xác nhận rằng SelectedItem
đã thay đổi (bạn có thể thiết lập chế độ Binding
để TwoWay
tạm thời để xem nếu nó hoạt động theo chiều ngược lại, bằng cách nhấn vào liên tiếp bạn sẽ thấy nổi bật và SelectedItem
's set
-method execute). Nếu có, hãy xác minh rằng bạn thực sự khớp chính xác với tên thuộc tính trên phương thức gọi PropertyChanged
. Vì bạn không an toàn ở đây, bạn có thể đã mắc lỗi chính tả. Nếu không, hãy kiểm tra xem thuộc tính Databinding của bạn có được đặt chính xác hay không. Một ý tưởng khác là bạn có thể đã thay đổi kiểu hoặc mẫu của DataGrid
và bây giờ bạn đang thiếu một số trong số Visual States. DataGridRow
có thể được tạo kiểu bằng cách sử dụng mẫu kiểu. Bạn có ba trạng thái được chọn, được gọi là UnfocusedSelected
(có thể là đúng), NormalSelected
và MouseOverSelected
.
Bạn có thể cố gắng làm cho Nhà nước trực quan của riêng bạn bằng cách sử dụng mẫu này:
<Style TargetType="local:DataGridRow">
<Setter Property="IsTabStop" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:DataGridRow">
<localprimitives:DataGridFrozenGrid Name="Root">
<vsm:VisualStateManager.VisualStateGroups>
<vsm:VisualStateGroup x:Name="CommonStates">
<vsm:VisualState x:Name="Normal"/>
<vsm:VisualState x:Name="NormalAlternatingRow">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To="0"/>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To=".5"/>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="NormalSelected">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To="1"/>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="MouseOverSelected">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To="1"/>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="UnfocusedSelected">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To="1"/>
<ColorAnimation Duration="0" Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="(Fill).Color" To="#FFE1E7EC"/>
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
<vsm:VisualStateGroup x:Name="ValidationStates">
<vsm:VisualState x:Name="Valid"/>
<vsm:VisualState x:Name="Invalid">
<Storyboard>
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="InvalidVisualElement" Storyboard.TargetProperty="Opacity" Duration="0" To="1"/>
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
</vsm:VisualStateManager.VisualStateGroups>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.Resources>
<Storyboard x:Key="DetailsVisibleTransition">
<DoubleAnimation Storyboard.TargetName="DetailsPresenter" Storyboard.TargetProperty="ContentHeight" Duration="00:00:0.1" />
</Storyboard>
</Grid.Resources>
<Rectangle x:Name="BackgroundRectangle" Grid.RowSpan="2" Grid.ColumnSpan="2" Opacity="0" Fill="#FFBADDE9"/>
<Rectangle x:Name="InvalidVisualElement" Grid.RowSpan="2" Grid.ColumnSpan="2" Opacity="0" Fill="#FFF7D8DB"/>
<localprimitives:DataGridRowHeader Grid.RowSpan="3" Name="RowHeader" localprimitives:DataGridFrozenGrid.IsFrozen="True" />
<localprimitives:DataGridCellsPresenter Grid.Column="1" Name="CellsPresenter" localprimitives:DataGridFrozenGrid.IsFrozen="True" />
<localprimitives:DataGridDetailsPresenter Grid.Row="1" Grid.Column="1" Name="DetailsPresenter" />
<Rectangle Grid.Row="2" Grid.Column="1" Name="BottomGridLine" HorizontalAlignment="Stretch" Height="1" />
</localprimitives:DataGridFrozenGrid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Đây là một copy-paste từ một tốt MSDN Article về tùy chỉnh Styles DataGrid. Ví dụ, bạn có thể sửa đổi phần UnfocusedSelected
của mẫu và xem liệu bạn có thấy bất kỳ thay đổi nào khi, ví dụ: thêm đường viền màu đỏ xung quanh mẫu hay gì đó không.
Có thể đáng để thử. Tôi hy vọng rằng bạn biết cách áp dụng phong cách riêng. Nếu không, đây là một số khác MSDN Resource.
Tôi biết, đây chỉ là mẹo, nhưng có thể hữu ích sau cùng.
Tôi có INotifyPropertyChanged và đang thiết lập giá trị của thuộc tính đã gọi sự kiện PropertyChanged. –