可視性の順序に基づいて、DataGridの長方形の色を変更する必要があります。たとえば、5行あり、3行目の長方形が初めて表示される場合は、緑色で塗りつぶす必要があります。次に表示される長方形は赤になり、以下同様に続きます。
これが私のコードです:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Rectangle x:Name="colorBox" Height="15" Width="15" Stroke="#9C9C9C"
Visibility="{Binding Path=IsDisplayable,
Converter={StaticResource BoolVisibilityConverter}}">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Style.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Setter Property="Fill" Value="{Binding Path=FillColor}" />
</Trigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
私はこのコードを書きましたが、機能していません。論理的には間違いないようですが、実際には長方形の可視性が変化したときにこのトリガーが呼び出されることはないと思います。この問題の良い解決策を教えてください。ありがとう
IsDisplayableプロパティはここで更新されます:
<DataGridTemplateColumn x:Name="CheckboxColumnHeader"
Header="{Binding Source={x:Reference Name=treeView}, Path=DataContext.CheckboxColumnHeader}"
IsReadOnly="True" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="displayedObjects" IsChecked="{Binding IsDisplayable, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource {x:Type DataGridCell}}">
<Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
そして最後に、コードビハインドは次のとおりです。
public bool IsDisplayable
{
get
{
return this.isDisplayable;
}
set
{
if (this.isDisplayable!= value)
{
this.isDisplayable= value;
//NotifyOfPropertyChange(() => this.isDisplayable);
Action notify = () => NotifyOfPropertyChange(() => this.isDisplayable);
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, notify);
}
}
}
public Brush FillColor
{
get
{
return signalColors[currentColorIndex];
}
set
{
}
}