【问题标题】:Binding a control to color in Win8 app store在 Win8 应用商店中将控件绑定到颜色
【发布时间】:2013-08-14 17:08:45
【问题描述】:

我有一个带有颜色类型属性的 LayoutAwarePage - “MyColor”。 我向页面添加了一个简单的控件,例如 Rectangle 或 TextBox,并将控件的背景限定为 MyColor。 我将 MyColor 设置为黑色、白色、红色等 - 这些都不起作用。无论我做什么,控件都保持黑色。如何解决?

我听从了您的建议,并且成功了,谢谢!我还尝试在页面中添加下一个样式:

<Grid.Resources>
            <ResourceDictionary>
                <Style TargetType="a:MyTextBlock">
                    <Setter Property="Background" Value="{Binding TextBlockBackgroundColor}"></Setter>
                   <Setter Property="BorderBrush" Value="{Binding TextBlockBorderColor}"></Setter>
                   <Setter Property="Width" Value="200"></Setter>
                   <Setter Property="IsReadOnly" Value="False"></Setter>
                   <Setter  Property="BorderBrush" Value="3" ></Setter>
               </Style>
           </ResourceDictionary>
      </Grid.Resources>

现在我看不到 MyTextBlock 类型的控件...

这是为什么呢?

【问题讨论】:

    标签: binding windows-8


    【解决方案1】:

    您必须将RectangleFill 属性与SolidColorBrush 绑定,而不是Color。请参阅下面的代码。

    viewModel.cs

    public class viewModel
    {
        public Color color { get; set; }
        public viewModel(Color _color)
        {
            color = _color;
        }
        public SolidColorBrush MyColor
        {
            get
            {
                return new SolidColorBrush(color);
            }
        }
    }
    

    BlankPage1.xaml.cs

    public BlankPage1()
    {
        this.InitializeComponent();
        DataContext = new viewModel(Colors.Red);
    }
    

    XAML

    <Rectangle Height="100" Width="100" Fill="{Binding MyColor}" />
    

    【讨论】:

    • 好的。但为什么我必须这样做?为什么我不能使用 Color 而必须使用 SolidColorBrush?
    • 因为FillBackgroundForegroundStroke 属性是SolidColorBrush 的类型,而不是Color
    • 原生 TextBlock 没有 BackgroundBorderBrush 属性。可以分享MyTextBlock的代码吗?
    • 你想像this那样做吗?
    • 我从 TextBox 派生出来并称之为 MyTextBlock... :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 2016-01-03
    • 2022-07-24
    • 1970-01-01
    相关资源
    最近更新 更多