2012-03-03 62 views
1

我想爲我的自定義按鈕模板提供模板屬性,其中包含影響圖像內容的不同選項。如何動態設置模板屬性選項

I.e.

  1. 關閉
  2. 最大化
  3. 恢復
  4. 最小化

所以當控制的用戶想要設置按鈕最大化的類型,他們把它挑出來一降下來在屬性檢查器中,嵌入在按鈕中的圖像控件的源變爲「{DynamicResource MaximiseGlyph}」。

我怎樣才能讓用戶選擇的按鈕,然後這也將選擇適當的圖像控制源的模板?

這裏是我的按鈕模板的當前基本代碼:

<Style x:Key="WindowControlButton" TargetType="{x:Type Button}"> 
    <Style.Resources> 
     <BitmapImage x:Key="RestoreGlyph" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="\Restore.png"/> 
     <BitmapImage x:Key="MaximiseGlyph" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="\Maximise.png"/> 
     <BitmapImage x:Key="CloseGlyph" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="\Close.png"/> 
     <BitmapImage x:Key="MinimiseGlyph" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="\Minimise.png"/> 
    </Style.Resources> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <Grid> 
        <Ellipse Fill="Black" Opacity="0.7"> 
         <Ellipse.Stroke> 
          <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0"> 
           <GradientStop Color="White" Offset="0"/> 
           <GradientStop Color="#FFB8B8B8" Offset="1"/> 
          </LinearGradientBrush> 
         </Ellipse.Stroke> 
        </Ellipse> 
        <Image Source="{DynamicResource RestoreGlyph}"/> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsFocused" Value="True"/> 
        <Trigger Property="IsDefaulted" Value="True"/> 
        <Trigger Property="IsMouseOver" Value="True"/> 
        <Trigger Property="IsPressed" Value="True"/> 
        <Trigger Property="IsEnabled" Value="False"/> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

你能澄清你的問題是什麼? – kaj 2012-03-03 21:29:59

+0

那麼如何將模板屬性設置爲四個值之一,然後設置用戶選擇的值將按鈕內圖像的源屬性更改爲四個不同值之一 – Kian 2012-03-03 21:33:28

回答

1

你需要創建一個自定義控制繼承一個按鈕來保存你的新屬性,並讓您的模板被綁定到它。

您可以按照本教程中創建自定義控制

http://wpftutorial.net/HowToCreateACustomControl.html

+0

謝謝,我有一種感覺我將不得不創建一個自定義控件,但是我希望避免使用控件模板。我能夠使用我現有的代碼並將其集成到使用帶有內容容器的控件模板的自定義控件中,然後使用自定義控件作爲包裝來公開以編程方式將內容設置爲「' – Kian 2012-03-06 13:56:52