2011-05-23 57 views
1

以我的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中如上所定義的前景顏色和背景顏色。

實際結果:前景色工作(顯示爲橙色),但背景保持透明。

爲什麼不將運行的背景綁定到資源工作,就像它與前景一樣?我嘗試將運行和段落添加到FlowDocument中,然後進行綁定,但結果相同。

回答

1

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

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

一個真正的謎就是爲什麼只寫「ForegroundProperty」的作品。

+0

'ForegroundProperty'從相當基本的類繼承,所以你可以引用你的代碼所在的控件的屬性。 – 2011-05-23 18:04:28

+0

非常感謝您提供清晰,簡潔的答案!沉默失敗讓我難住。 :) – BigScary 2011-05-24 18:03:05