Silverlight Windows Phone上静态资源的转换器

Silverlight Windows Phone上静态资源的转换器,silverlight,windows-phone-7,Silverlight,Windows Phone 7,希望这应该是一个简单的,我有一个矩形的背景,我想显示为手机的重点颜色或禁用的颜色基于布尔在我的视图模型 我假设转换器是一种方法,但不确定访问静态资源的语法 <Rectangle.Fill> <SolidColorBrush Color="{StaticResource PhoneAccentColor}"/> </Rectangle.Fill> 您有两个选择: 使用 在viewmodel上定义一个属性,该属性基于布尔值返回笔刷。我更喜欢这种解决方案

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

我假设转换器是一种方法,但不确定访问静态资源的语法

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

您有两个选择:

  • 使用
  • 在viewmodel上定义一个属性,该属性基于布尔值返回笔刷。我更喜欢这种解决方案,因为转换器的性能影响在手机上比在桌面上更明显

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

    在您的代码中,还应包含将转换器转换为电刷的专业知识:-

    public class BoolToBrushConverter : BoolToValueConverter<Brush> { }
    
    公共类BoolToBrushConverter:BoolToValueConverter{}
    
    现在将转换器添加到Xaml中,如下所示:-

    <Grid.Resources>
       <local:BoolToBrushConverter x:Key="DisabledBrushConv"
          FalseValue="{StaticResource PhoneAccentBrush}"
          TrueValue="{StaticResource PhoneDisabledBrush}" />
    </Grid>
    
    
    
    然后在矩形中:-

     <Rectangle Fill="{Binding Disabled, Converter={StaticResource DisabledBrushConv}}" ... />
    
    
    
    这假定视图模型中的属性名为
    已禁用