我想根据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。所以我想根据一些属性改变颜色。有什么建议吗?
答案 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}}...
希望它有所帮助!