2015-10-30 54 views
1

我創建了一個自定義按鈕。我需要更多不同背景的風格相同的按鈕。有可能爲每個按鈕創建模板。但是這消除了代碼可重用性。是否有可能爲所有按鈕應用相同的模板,但是像背景一樣改變屬性。 這是我的代碼。在wpf中創建具有不同屬性的模板按鈕

 <ControlTemplate x:Key="custom-button" TargetType="Button"> 
      <Grid x:Name="btn_image"> 
       <Image Name="btnBackground" Source="Media/Knob Red.png"></Image> 
      </Grid> 
      <ControlTemplate.Triggers> 
       <DataTrigger Binding="{Binding Path=IsRunning}" Value="false"> 
        <Setter TargetName="btnBackground" Property="Source" Value="Media/Knob Play.png"></Setter> 
       </DataTrigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 

這是我應用模板的按鈕。

<Button Name="start" Template="{StaticResource custom-button}" HorizontalAlignment="Left" Margin="147,67,0,0" VerticalAlignment="Top" Width="37" Height="30" Click="Start_Click"> 
</Button> 

現在我需要使用模板的幾個按鈕,但他們應該有不同的背景。要改變什麼。嘗試了很多方法,但沒有一個運氣。

這些是我的其他按鈕。

<Button Template="{StaticResource custom-button}" Name="reset" HorizontalAlignment="Left" Margin="194,67,0,0" VerticalAlignment="Top" Width="37" Height="30" Click="Reset_Click"> 
      <Button.Background> 
       <ImageBrush ImageSource="Media/Knob Refresh.png"/> 
      </Button.Background> 
</Button> 
<Button Template="{StaticResource custom-button}" x:Name="close" HorizontalAlignment="Left" Margin="236,0,0,0" VerticalAlignment="Top" Width="20" Height="18" RenderTransformOrigin="1.771,-1.3" Click="Close"> 
      <Button.Background> 
       <ImageBrush ImageSource="Media/Knob Purple.png"/> 
      </Button.Background> 
</Button> 

回答

0

你可以做你的自定義控制裏面的以下內容:

<Image Name="btnBackground" Source="{TemplateBinding Background}"></Image> 

而在你的按鈕聲明中,您可以通過圖像作爲背景屬性。

+0

只有圖像刷被接受在按鈕 –

+0

那麼你可以做像背景= {staticResource ResourceKey = key}。 而關鍵是ImageBrush聲明爲靜態資源的關鍵。在你的控制之下 –