私のDatagridに問題があります。ソースクラスのプロパティをハンギングすると、更新されません。ItemSourceのアイテムのDatagrid PropertychangeがDatagridを更新しない
これは、ソース(一覧)への結合は、XAMLで行われている方法である:ここでは
<DataGrid Name="dtgDecodedMsg"
ItemsSource="{Binding Path=MsgTypGridLineListVar, UpdateSourceTrigger=PropertyChanged}"
はクラスが組み込まれている方法の画像です: Classes
短い説明: 私はAを押しますボタンとこのボタンは、表示したい情報でMsgTypGridLineListVarを埋めます。次に、OnPropertyChangedを呼び出してDatagridを更新します。これは動作しています!
DataGridが既に埋め込まれている場合、一部のセルの表示/テキストを変更する必要があります。だから、特定のフィールドや行だけを変更し、新しいものを作成しないようにする必要があります。 私が思ったのは、私が望む値を変更してからOnPropertyChanged("MsgTypGridLineListVar");
にもう一度電話をかけたということでした。
しかし、これは動作しません..私はこの行がもう見えないようにスクロールし、再びスクロールすると、セルのテキストのために働きます。しかし、それは可視性のためには機能しません。ここで
は、私が作成したテスト・ボタンです:
private void testButton_click(object parameter)
{
this.MsgTypGridLineListVar[0].ByteCell.CellValue = "TEST";
this.MsgTypGridLineListVar[2].RowVisible = Visibility.Collapsed;
OnPropertyChanged("MsgTypGridLineListVar");
}
としてはなく、可視性のために(私はスクロールダウンしている場合)には、テキストのために働く言及しました。 アップデートがすぐに行われるように変更する必要があります。
はここであなたがバインド私がどのように見ることができ、私のXAMLコード-DataGridの:
<DataGrid Name="dtgDecodedMsg"
CanUserSortColumns="False"
CanUserAddRows="False"
CanUserReorderColumns="False"
HeadersVisibility="Column"
IsTabStop="False"
ClipboardCopyMode="IncludeHeader"
SelectedIndex="{Binding DecodeSelectedGridIdx, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
ItemsSource="{Binding Path=MsgTypGridLineListVar, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="False"
Margin="10,111,10,0">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="..." Width="25">
<DataGridCheckBoxColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderBrush" Value="LightBlue"/>
<Setter Property="BorderThickness" Value="2"/>
</Trigger>
</Style.Triggers>
<Setter Property="Background" Value="{Binding HideCell.CellColor}"/>
<Setter Property="BorderBrush" Value="{Binding HideCell.CellColor}"/>
<Setter Property="Focusable" Value="{Binding HideCell.CheckBoxEnabled}"/>
</Style>
</DataGridCheckBoxColumn.CellStyle>
<DataGridCheckBoxColumn.ElementStyle>
<Style TargetType="CheckBox">
<Setter Property="Visibility" Value="{Binding HideCell.CheckBoxVisibility}"/>
<Setter Property="IsChecked" Value="{Binding CheckBoxChecked,UpdateSourceTrigger=PropertyChanged}" />
</Style>
</DataGridCheckBoxColumn.ElementStyle>
</DataGridCheckBoxColumn>
<DataGridTextColumn Header="Value" Binding="{Binding ValueTelegramCell.CellValue}" IsReadOnly="True" Width="*">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderBrush" Value="LightBlue"/>
<Setter Property="BorderThickness" Value="2"/>
</Trigger>
</Style.Triggers>
<Setter Property="Foreground" Value="{Binding ValueTelegramCell.TextColor}"/>
<Setter Property="Background" Value="{Binding ValueTelegramCell.CellColor}"/>
<Setter Property="BorderBrush" Value="{Binding ValueTelegramCell.CellColor}"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Visibility" Value="{Binding MsgTypGridLineListVar.RowVisible, UpdateSourceTrigger=PropertyChanged}"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
ありがとうございました!私はサブクラスでINotifyPropertyChangedを実装するのを忘れました.. * facepalm * – kpischi