如何在Silverlight中更改Style.Triggers

3

我是SilverLight的初学者,在下面的xaml代码中,Style.Triggers在Silverlight中无法识别,我已经将其注释掉了。在这种情况下,Style.Triggers的替代方案是什么?如果是VisualStateManager,我应该如何将其更改为VisualStateManager

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="IsEnabled" Value="False"/>
        <!--<Style.Triggers>
            <Trigger Property="ItemsControl.AlternationIndex" Value="0">
                <Setter Property="Control.Background" Value="#d9e2ea"/>
            </Trigger>
            <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                <Setter Property="Control.Background" Value="#9eceec"/>
            </Trigger>
        </Style.Triggers>-->
    </Style>
</ListBox.ItemContainerStyle>

请您能否帮我检查一下我的答案,并告诉我是否有所帮助。 - Vikas_Systematix
1个回答

0

我认为,你需要根据布尔值来改变背景颜色。

你可以创建并使用一个 'BooleanToBrushConverter'。

C# 代码:

public class BooleanToBrushConverter : IValueConverter
{
    public Brush TrueBrush { get; set; }

    public Brush FalseBrush { get; set; }

    public Brush NullBrush { get; set; }

    /// <summary>
    /// Converts the data for display.
    /// </summary>
    public Object Convert(object value, Type targetType, object parameter,
        System.Globalization.CultureInfo culture)
    {
        if (value == null) return NullBrush;
        else return (bool)value ? TrueBrush : FalseBrush;
    }

    /// <summary>
    /// Converts the data from display
    /// </summary>
    public Object ConvertBack(Object value, Type targetType, Object parameter,
        System.Globalization.CultureInfo culture)
    {
        return value == TrueBrush;
    }
}

XAML 代码:

(您需要将以下内容包含在 XAML 的顶部)xmlns:lc="clr-namespace:NamespaceOfYourConverterClass"

(在主 < Grid> 的 < Grid.Resources> < /Grid.Resources> 中添加以下转换器代码)

            <lc:BooleanToBrushConverter x:Key="myBooleanToColorConverter"
                                       TrueBrush="#9eceec"
                                       FalseBrush="#d9e2ea" />

(现在,您需要在绑定控件的背景属性时使用此“转换器”)

例如:

<ItemsControl Background="{Binding IsActive, Converter={StaticResource myBooleanToColorConverter}}">
</ItemsControl>

注意:在ViewModel中,“IsActive”是一个布尔属性,返回true(1)或false(0)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接