2011-11-03 29 views
3

我試圖在動態更改按鈕後重置按鈕的Background屬性。ClearValue不會恢復預設值


<Button Canvas.Left="-1" Canvas.Top="0" Content="a" FontFamily="Arial" Grid.Column="1" Height="60" Tag="a" Name="Ba" Width="60" FontWeight="Bold" FontSize="35" Foreground="Black"> 
      <Button.Background> 
       <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
        <GradientStop Color="White" Offset="0" /> 
        <GradientStop Color="Black" Offset="1" /> 
        <GradientStop Color="#FF757575" Offset="0.893" /> 
        <GradientStop Color="#FF989898" Offset="0.074" /> 
       </LinearGradientBrush> 
      </Button.Background> 
     </Button> 

後,我用像ClearValue方法,以便:


Ba.ClearValue(System.Windows.Controls.Button.BackgroundProperty); 

我並不完全返回到什麼是在規定的.xaml文件。它看起來相似,但不一樣。看起來有些信息丟失了。

我怎樣才能以某種方式存儲所有這些信息以便完全恢復?

由於提前,

舊金山聖地亞哥

回答

2

定義樣式,設置背景有,如果你再次需要重新塗抹。

+0

我會試試這個,我會盡快回復您。謝謝H.B. –

+0

@FranciscoSantiago:雖然知道[precedence](http://msdn.microsoft.com/en-us/library/ms743230.aspx)。例如如果您在控件上設置了一個值,它將覆蓋樣式。 –

+0

嗯,我一味地試圖找到我的方式進入這個應用程序,因爲我沒有太多時間。 通過定義這種風格並將其應用於所有按鈕,ClearValue不僅正確地重置樣式,而且還擦除了大約300行代碼。 非常感謝你。 –

0

我並不完全回到那個在的.xaml文件

它不應該定義; ClearValue清除該屬性的本地值,使其「未設置」。當需要該值時,根據描述的優先規則here確定。在大多數情況下,它將是在控件的默認樣式中聲明的值。

如果你想恢復在XAML中定義的原始值,你需要存儲在某個地方你改變之前

+0

不完全是,它會回到未設置狀態並解決任何在樣式和默認模板中定義的內容。 –

+0

@ H.B。,你說得對,我會更新我的答案 –

+0

我會嘗試創建一種新的風格。對於noob問題我很抱歉。我對WPF完全陌生。 –