【问题标题】:How do I bind the foreground of a textblock to a color/brush object?如何将文本块的前景绑定到颜色/画笔对象?
【发布时间】:2020-01-03 15:04:04
【问题描述】:

我想将文本块前景属性绑定到颜色对象(或画笔对象,我不知道哪个是正确的)。 我的颜色和画笔存储在一个名为 Colors 的类中(例如 Colours.MyColour),所以我像这样设置 DataContext:

DataContext="{Binding} Colours"

并像这样绑定前台属性:

<TextBlock Text="Text" Foreground="{Binding MyColour}"/>

它不起作用,所以我显然做错了。有人可以告诉我吗?

【问题讨论】:

  • 它不起作用,因为您的 datacontext 本身是一个包含简单文本的字符串...您应该尝试将 datacontext 设置为您所说的类的 instance持有颜色属性....此外,该属性的类型也应该与 Foreground 属性相同。并且,不要忘记使用 INotifyPropertyChange 来通知您视图何时模型中的某些变化......我想这已经足够开始......照顾你的宠物。
  • 为什么要设置DataContext?其次,您如何声明 Colors 类的实例并为正确拼写颜色 +1。
  • 其实是一个静态类。前景需要颜色还是画笔?
  • 您如何在 xaml 中引用该静态类?这里是 MSDN TextBlocks Foreground 属性的链接。
  • 前景是笔刷,填充、描边和背景也是如此。也许您应该使用资源而不是类。将标准颜色和画笔放在资源字典中,并合并到 app.xaml 中的 application.current.resources 中。然后,您可以将 tyese 用作静态资源 - 如果您打算更改它们,则可以使用动态资源。

标签: wpf data-binding colors textblock


【解决方案1】:

TextBlock.Foreground 属性是Brush,所以Colours 的成员也应该是Brush 类型。

您的 cmets 说 Coloursstatic 类。如果是这种情况,您应该可以像这样使用x:Static 引用它:

<TextBlock Text="Text" Foreground="{x:Static local:Colours.MyColour}"/>

请注意,您需要指定定义Colours 的命名空间。在顶部的 XAML 文件中使用 xmlns 引用了其他命名空间。默认情况下,当前项目的命名空间添加为“本地”,因此local:Colours.MyColour 中的local:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 2011-05-07
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多