Как обновить цвет фона границы на основе значения в текстовом блоке во время выполнения в Silverlight? - PullRequest
0 голосов
/ 24 марта 2011

У меня есть DataTemplate с двумя элементами. Я могу обновить значение текстового блока во время выполнения. Мне нужно обновить фон границы на основе значения из texblock. Например, мне нужно сделать фон границы красным, когда texblock получает значение «Нет», и изменить цвет на зеленый, где texblock получает значение строки «Да». Я применил привязку TwoWay, но она только обновляет значение текстового блока без влияния на цвет фона границы. Любой совет высоко ценится! Ниже XAML:

<UserControl.Resources>
    <DataTemplate x:Key="DataTemplateYesNo">
        <StackPanel Orientation="Horizontal">
            <Border x:Name="BoxColor" Width="10" Height="10" VerticalAlignment="Center" Background="#FF00FF3E" Margin="0,0,5,0" >
                <i:Interaction.Triggers>
                    <ic:DataTrigger Binding="{Binding Y}" Value="No">
                        <ic:ChangePropertyAction PropertyName="Background" Duration="0">
                            <ic:ChangePropertyAction.Value>
                                <SolidColorBrush Color="Red"/>
                            </ic:ChangePropertyAction.Value>
                        </ic:ChangePropertyAction>
                    </ic:DataTrigger>
                </i:Interaction.Triggers>
            </Border>
            <TextBlock Text="{Binding Y, Mode=TwoWay}" VerticalAlignment="Center" />
        </StackPanel>
    </DataTemplate>
</UserControl.Resources>

<StackPanel Orientation="Horizontal">
   <data:DataGrid x:Name="mdg" ItemsSource="{Binding Coordinates, Mode=TwoWay}"
                   AutoGenerateColumns="False">
        <data:DataGrid.Columns>             
            <data:DataGridTextColumn Header="X Position" Width="100" Binding="{Binding X, Mode=TwoWay}"/>
            <data:DataGridTemplateColumn Header="Y Position" Width="100" CellTemplate="{StaticResource DataTemplateYesNo}" />
        </data:DataGrid.Columns>
    </data:DataGrid>
</StackPanel>

1 Ответ

0 голосов
/ 24 марта 2011

Конвертер переплета:

class YesNoStringToColorConverter : IValueConverter
{
    public object Convert(object value, ...)
    {
        if (value == "Yes") return new SolidColorBrush(Colors.Green);
        if (value == "No") return new SolidColorBrush(Colors.Red);
        return null;
    }

    ...
}

XAML

        <Border BorderBrush="{Binding Text, ElementName="textBlock", Converter=/*Pass YesNoStringToColorConverter here*/}" ...>
        <TextBlock Text="{Binding Y}" x:Name="textblock" />
...