首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListBoxItem风格查询

ListBoxItem风格查询
EN

Stack Overflow用户
提问于 2013-10-08 10:28:55
回答 1查看 67关注 0票数 0

我正试图在ListboxItem的帮助下为我的ValueConverter设置背景。但是背景没有被应用。调试时,我发现值转换器返回正确的值。我的代码遗漏了什么吗?

注意:我不想使用替代索引样式的

XAML:

代码语言:javascript
复制
<Style x:Key="listBoxItemAlternateStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="MinHeight" Value="20"/>
<Setter Property="Focusable" Value="False"/>
<Setter Property="Background">
    <Setter.Value>
        <MultiBinding Converter="{StaticResource AlternateIndexConverter}">
            <MultiBinding.Bindings>
                <Binding Path="IsVisible" />
                <Binding Path="Index" />
            </MultiBinding.Bindings>
        </MultiBinding>
    </Setter.Value>
</Setter>
<Style.Triggers>
    <DataTrigger Binding="{Binding Path=IsVisible}" Value="False">
        <Setter Property="Visibility" Value="Collapsed" />
    </DataTrigger>
    <DataTrigger Binding="{Binding Path=IsVisible}" Value="True">
        <Setter Property="Visibility" Value="Visible" />
    </DataTrigger>
</Style.Triggers>
</Style>

代码背后:

代码语言:javascript
复制
 public class AlternateIndexConverter : System.Windows.Data.IMultiValueConverter
{

 public static uint count = 0;

public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    bool isVisible = bool.Parse(values[0].ToString());
    uint index = uint.Parse(values[1].ToString());

    if (index == 0)
        count = 0;

    if (isVisible && count % 2 == 0)
    {
        count++;
        return "#C8C8C8"; //dark color
    }
    else if (isVisible && count % 2 == 1)
    {
        count++;
        return "#E1E1E1"; //light color
    }
    else
        return null;
}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
    throw new NotImplementedException();
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-08 10:39:10

从您的Brush而不是String返回String

代码语言:javascript
复制
 if (isVisible && count % 2 == 0)
    {
        count++;
        return new SolidColorBrush(Color.FromArgb(255,200,200,200)); //dark color
    }
    else if (isVisible && count % 2 == 1)
    {
        count++;
        return new SolidColorBrush(Color.FromArgb(255,225,225,225)); //light color
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19245233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档