2010-12-11 98 views
3

我使用Silverlight 4,我有一個按鈕:Silverlight:爲什麼這種風格不起作用?

 <Button Click="addTopicButton_Click"> 
      <Image Source="/PlumPudding;component/Images/appbar.add.rest.png" /> 
     </Button> 

它看起來不錯。然而,當我嘗試設置其Content使用Style,沒有出現內容:

<Style x:Name="AddButton" TargetType="Button"> 
     <Setter Property="Content"> 
      <Setter.Value> 
       <Image Source="/PlumPudding;component/Images/appbar.add.rest.png" /> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Button Click="addTopicButton_Click" Style="{StaticResource AddButton}" /> 

按鈕是空的。爲什麼是這樣?

回答

1

你應該使用X:關鍵命名風格元素,而不是X:名稱

+0

這可能不是全部答案 - 但它肯定會對問題有所影響。 – ChrisF 2010-12-12 17:57:53

5

它不是一個好主意,包括UI元素,例如在樣式Image。在Xaml解析期間將樣式放在一起時,只創建一次這樣的對象。瞭解UIElements的一個重要事情是單個實例只能在Visual Tree中出現一次。所以,即使你的代碼工作,它只適用於一個按鈕,任何其他嘗試使用相同樣式的按鈕都會失敗。

相反,你可以使用ContentTemplate屬性是這樣的: -

<Style x:Key="AddButton" TargetType="Button"> 
    <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <Image Source="/PlumPudding;component/Images/appbar.add.rest.png" /> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<Button Click="addTopicButton_Click" Style="{StaticResource AddButton}" /> 

按鈕現在因爲它用來構造呈現按鈕的內容的子元素DataTemplate。因此,每個按鈕將構建一個自己的獨立實例,即一個Image控件。

0

您的代碼需要兩個更改。

  1. 改變x:Namex:Key,而當你要使用它,使用StaticResource參考。

  2. 更改此

    <Setter.Value> 
         <Image Source="whatever..." /> 
    </Setter.Value> 
    

    此,

    <Setter.Value> 
        <DataTemplate> 
         <Image Source="whatever..." /> 
        </DataTemplate> 
    </Setter.Value> 
    

看看它可以幫助你!

相關問題