如何动态绑定运行的背景画笔到资源?

时间:2011-05-23 17:49:52

标签: wpf binding resources flowdocument dynamic-binding

在我的app.xaml中:

<Application.Resources>
    <SolidColorBrush x:Key="colorBrush1" Color="Orange" Opacity="1"/>
    <SolidColorBrush x:Key="colorBrush2" Color="Green" Opacity="1"/>
</Application.Resources>

在我的代码隐藏中:

Run run = new Run("My name is Bob!");
run.SetResourceReference(ForegroundProperty, "colorBrush1");
run.SetResourceReference(BackgroundProperty, "colorBrush2");

Paragraph paragraph = new Paragraph(run);

this.flowDocument.Blocks.Add(paragraph);

预期结果:运行时会显示上面app.xaml中定义的前景色和背景色。

实际结果:前景颜色有效(显示为橙色),但背景仍保持透明。

为什么不将运行的背景绑定到资源工作,就像前景一样??? 我尝试首先将run和paragraph添加到FlowDocument然后绑定,但结果是同样的。

1 个答案:

答案 0 :(得分:1)

原因是需要澄清BackgroundProperty。这就是你想要的:

        Run run = new Run("My name is Bob!");
        run.SetResourceReference(Run.ForegroundProperty, "colorBrush1");
        run.SetResourceReference(Run.BackgroundProperty, "colorBrush2");

真正的谜团就是为什么只写“ForegroundProperty”。