Windows Phone上的静态资源转换器

时间:2011-03-07 12:55:47

标签: silverlight windows-phone-7

希望这应该是一个简单的,我有一个矩形的背景我希望在我的视图模型中显示为手机强调颜色或基于布尔值的禁用颜色。

我认为转换器是可行的方法,但不确定访问静态资源的语法。

<Rectangle.Fill>
    <SolidColorBrush Color="{StaticResource PhoneAccentColor}"/>
</Rectangle.Fill>

2 个答案:

答案 0 :(得分:11)

从此博客文章中获取通用BoolToValueConverter的代码: -

A Generic Boolean Value Converter

在您的代码中还包含转换为Brush的专业化: -

public class BoolToBrushConverter : BoolToValueConverter<Brush> { }

现在将转换器添加到您的Xaml中,如下所示: -

<Grid.Resources>
   <local:BoolToBrushConverter x:Key="DisabledBrushConv"
      FalseValue="{StaticResource PhoneAccentBrush}"
      TrueValue="{StaticResource PhoneDisabledBrush}" />
</Grid>

然后在矩形中: -

 <Rectangle Fill="{Binding Disabled, Converter={StaticResource DisabledBrushConv}}" ... />

这假定视图模型中的属性称为Disabled

答案 1 :(得分:0)

您有两种选择:

  1. 使用converter
  2. 在viewmodel上定义一个属性,该属性根据布尔值返回Brush。我更喜欢这种解决方案,因为转换器的性能在手机上比在桌面上更明显。