मुझे लगता है कि आप वास्तव में सत्यापित है कि SelectedItem
बदल गया है (आप अगर यह इसके विपरीत काम करता है, पंक्ति पर क्लिक करके देखने के लिए आप को उजागर और SelectedItem
के देखना चाहिए TwoWay
अस्थायी रूप से करने के लिए Binding
मोड सेट कर सकते हैं set
-method निष्पादित)। यदि हां, तो सत्यापित करें कि आप वास्तव मेंPropertyChanged
विधि आवेषण पर संपत्ति नाम से बिल्कुल मेल खाते हैं। चूंकि आप यहां टाइपएफ़ नहीं हैं, इसलिए आपने वर्तनी त्रुटि की हो सकती है। यदि नहीं, तो जांचें कि क्या आपका डाटाबेसिंग विशेषता सही ढंग से सेट है या नहीं। एक और विचार यह है कि आपने DataGrid
की शैलियों या टेम्पलेट को बदल दिया होगा और अब आप दृश्य राज्य में से कुछ खो रहे हैं। DataGridRow
शैली टेम्पलेट का उपयोग करके स्टाइल किया जा सकता है। आपके पास तीन चयनित राज्य हैं, जिन्हें UnfocusedSelected
(शायद सही एक) कहा जाता है, NormalSelected
और MouseOverSelected
।
आप इस टेम्पलेट का उपयोग करके अपने खुद के दृश्य राज्य बनाने के लिए कोशिश कर सकते:
<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>
यह डेटा ग्रिड शैलियाँ अनुरूपण पर एक अच्छा MSDN Article से एक कॉपी-पेस्ट है। उदाहरण के लिए, आप टेम्पलेट के UnfocusedSelected
भाग को संशोधित कर सकते हैं और देख सकते हैं कि क्या आप कोई परिवर्तन देखते हैं, उदाहरण के लिए, इसके चारों ओर एक लाल सीमा जोड़ना।
शायद यह एक कोशिश के लायक है। मुझे उम्मीद है कि आप जानते हैं कि अपनी शैलियों को कैसे लागू करें। यदि नहीं, तो यहां एक और MSDN Resource है।
मुझे पता है, ये सिर्फ युक्तियां हैं, लेकिन आखिरकार सहायक हो सकती हैं।
मेरे पास INotifyPropertyChanged है और एक संपत्ति का मूल्य निर्धारित कर रहा हूं जो पहले से ही PropertyChanged ईवेंट को आमंत्रित करता है। –