Как изменить цвет эллипса, который присутствует в сетке во время выполнения?

 <DataGrid AutoGenerateColumns="False" Height="330" HorizontalAlignment="Left" Margin="5,70,0,0" Name="grdDeviceInfo" VerticalAlignment="Top"
                 CanUserAddRows="False" IsReadOnly="True" Width="368" HorizontalScrollBarVisibility="Auto">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Channels" Width="100" Binding="{Binding ChannelNo}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Label" Width="200" Binding="{Binding Label}"></DataGridTextColumn>
                    <DataGridTemplateColumn Header="Status" Width="60">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Ellipse Height="13" Name="grdfEllipse"  Stroke="Black" Fill="{}" Width="20"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>

Код позади:

 List<IOInformation> lstIOStatus = new List<IOInformation>();

                        for (int i = 0; i < channelStatus.Count(); i++)
                        {
                            // var columns = line.Split('\t');
                            lstIOStatus.Add(new IOInformation
                            {
                                ChannelNo = "Channel " + j++,
                                Label = labeldata[i],
                                MasterStatus = Convert.ToBoolean(channelStatus[i])
                            });
                        }

                        this.grdDeviceInfo.ItemsSource = lstIOStatus;

Я хочу изменить цвет эллипса на зеленый, если он истинный, или красный, если он ложный.

1 ответ

Решение

Вы можете использовать триггеры, чтобы сделать это. Вот ссылка на то, как лучше всего их использовать:

http://www.wpf-tutorial.com/styles/trigger-datatrigger-event-trigger/

Ваш код xaml будет выглядеть так:

<Ellipse Height="13" Name="grdfEllipse"  Stroke="Black" Width="20">
    <Ellipse.Style>
        <Setter Property="Fill" Value="Red"/>
        <Style TargetType="Ellipse">
            <Style.Triggers>
                <DataTrigger Binding="{Binding yourBinding}" Value="true">
                    <Setter Property="Fill" Value="Green"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Ellipse.Style>
</Ellipse>
Другие вопросы по тегам