2012-06-12 16 views
0

改變Button.Content我想用一個DataTrigger更改按鈕的內容在XAML。有條件我需要改變按鈕的文字。但是,如果Button最初有文本,則文本不會更改。使其工作的唯一方法是或者不設置Content,或將其設置爲觸發器。不能在XAML

所以,如果我有

<Button Content="Some text" /> 

觸發不會改變按鈕上的文字。

如果我有

<Button />

<Button> 
    <Button.Style> 
     <Style TargetType="Button"> 
      <Setter Property="Content" Value="Some text" /> 
     </Style> 
    </Button.Style> 
</Button> 

觸發作品。

爲什麼?

回答

1

這是因爲DepedencyProperty優先。在這裏看到:http://msdn.microsoft.com/en-us/library/ms743230.aspx

本地值有較高的優先順序比觸發器。這意味着本地值將「優先」在觸發值

當你在它改變了優先級的樣式設置。觸發器優先於樣式設置器,這就是它按照您的期望工作的原因。

+0

所以,我就應該總是設定一個觸發的初始文本,如果我想要在以後改變它,或者是有其他(更好)的方式來改變按鈕上的文字後,我與當地的值設置呢? –

+0

在觸發器中更改文本通常有點奇怪,但如果您必須這樣做,那麼我想爲它創建可重用的樣式。然後在樣式設置器中設置默認文本,並使樣式包含修改文本的觸發器。這清楚地說明了正在發生的事情。 –

+0

我設置按鈕文本取決於對象的狀態,在對話框中編輯,如果對象沒有掛起,按鈕寫入「掛起」,如果掛起 - 寫入「繼續」 - 我使用帶觸發器的樣式XAML,因爲我相信這是View的責任來設置按鈕的文本。 –