2012-10-12 91 views
0

我有一個資源的內部下面的樣式百科編輯樣式元素

<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="Button"> 

      <Grid> 
       <Rectangle Fill="#262626" Name="Normal"/> 
       <Rectangle Fill="#3f3f41" Name="Hover" Visibility="Hidden"/> 
       <Rectangle Fill="#007acc" Name="Pressed" Visibility="Hidden"/> 

       <Image Name="Icon"/> 
       <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </Grid> 

      <ControlTemplate.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter TargetName="Hover" Property="Visibility" Value="Visible"/> 
        <Setter TargetName="Pressed" Property="Visibility" Value="Hidden"/> 
       </Trigger> 
       <Trigger Property="IsPressed" Value="True"> 
        <Setter TargetName="Pressed" Property="Visibility" Value="Visible"/> 
        <Setter TargetName="Hover" Property="Visibility" Value="Hidden"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 

     </ControlTemplate> 
    </Setter.Value> 
</Setter> 

而且我需要的名字改變「源」的形象「圖標「(在我的MainWindow.xaml中)

 <Button Style="{StaticResource ToolbarButton}"> 
      <Setter TargetName="Icon" Property="Source" Value=".png"/> 
     </Button> 

但它給我的錯誤「源無法識別或不能入店」

我怎樣才能改變我的形象的「源」屬性名稱爲「圖標」的按鈕?

回答

2

WPF控件實際上在行爲中運行。按鈕不打算有一個圖像。雖然按鈕是一個ContentControl,但您可以將任何內容放入Button的內容中。

<Button> 
<image ... /> 
</Button 

在風格上面,你可以使用:

 <Grid> 
      <Rectangle Fill="#262626" Name="Normal"/> 
      <Rectangle Fill="#3f3f41" Name="Hover" Visibility="Hidden"/> 
      <Rectangle Fill="#007acc" Name="Pressed" Visibility="Hidden"/> 

      <Image Name="Icon" Source="{TemplateBinding Tag}" /> 
      <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
     </Grid> 

     <ControlTemplate.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter TargetName="Hover" Property="Visibility" Value="Visible"/> 
       <Setter TargetName="Pressed" Property="Visibility" Value="Hidden"/> 
      </Trigger> 
      <Trigger Property="IsPressed" Value="True"> 
       <Setter TargetName="Pressed" Property="Visibility" Value="Visible"/> 
       <Setter TargetName="Hover" Property="Visibility" Value="Hidden"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 

    </ControlTemplate> 
</Setter.Value> 

現在你可以在按鈕

的Tag屬性指定源但是,是不是一個正確的做法。您應該使用TemplateBinding來支持控件行爲的屬性。像TemplateBinding到Background作爲按鈕支持它,而按鈕不支持圖像。

讓我知道你是否需要別的東西。

+0

謝謝,非常有用的答案 – user962284