根据其中的值更改gridviewitem的颜色(存储App 8.1)

时间:2015-02-04 14:46:46

标签: c# xaml windows-store-apps windows-phone-8.1 windows-8.1

我想根据gridviewitem中包含的textblock中的值更改gridviewitem的颜色。

 <GridViewItem x:Name="IdeaGridView" Loaded="IdeaGridView_Loaded"
                         DataContext="{Binding}" Height="150" Width="250" HorizontalAlignment="Left" >
                        <StackPanel Height="150" >
                            <StackPanel Background="#CC00CC" HorizontalAlignment="Left" VerticalAlignment="Top" Width="250" Height="100">
                                <TextBlock Text="{Binding Title}" TextWrapping="Wrap"
                                                   Style="{StaticResource TxtStyle1}" ></TextBlock>
                                <TextBlock Text="{Binding Category}" TextWrapping="Wrap"
                                                   Style="{StaticResource TxtStyle2}" ></TextBlock>

                            </StackPanel>
                            <Grid  Background="Purple" VerticalAlignment="Bottom" Height="50">
                                <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
                                    <Image Height="20" Width="20"  Source="Assets/phone.png"></Image>
                                    <TextBlock  Style="{StaticResource TxtStyle3}" TextWrapping="Wrap"
                                                                Text="{Binding Type}"></TextBlock>
                                </StackPanel>
                            </Grid>
                        </StackPanel>

                    </GridViewItem>

我想根据属性&#34;类别&#34; 的值设置gridviewitem的颜色.trigview有一个对象作为itemssource。所以我想根据一些属性改变颜色。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您可以创建一个自定义IValueConverter,可以将类别值转换为颜色。或者,您可以将颜色逻辑移动到ViewModel中,并直接提供 Color 属性。

答案 1 :(得分:0)

这可行:

 class CategoryToColorConverter: IValueConverter
{
  public object Convert(object value, Type targetType, object parameter, string language)
    {
    if((bool)value)
        return Colors.White;
    else
        return Colors.Black;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
      if((bool)value)
          return Colors.Black;
             else
          return Colors.White;
    }
}

和Binding应该像这样工作:

<Page.Resources>
        <Common:CategoryToColorConverter x:Key="CategoryToColorConverter"/>
</Page.Resources>

...Color={Binding Category,Converter={StaticResource CategoryToColorConverter}}...

希望它有所帮助!