2014-01-07 21 views
0

我在找一個自定義的WPF按鈕的例子。 理想情況下采用Blend/VS2013配置,即VS2013測試解決方案,該解決方案包含一個可在Blend中爲VS2013編輯的按鈕項目。 按鈕應該有一個視覺外觀,使得它清楚它是在什麼狀態,即豐富的可視化行爲WPF按鈕的任何例子?

  • 普通=默認
  • 鼠標懸停=內發光
  • 按下=更小的尺寸/小陰影
  • ToggledOn =外發光
  • 殘疾人=變灰

鑑於這樣的示例中,我可以然後只是調整視覺使用Blend顯示狀態。

而在應用程序方面,我只想實例化按鈕,關聯樣式,併爲BackgroundColor,圖像/圖標,文本標籤,寬度,高度設置屬性。

我認爲使用ControlTemplate風格是推薦的方式,而不是子分類,請參閱MSDN

的三個關鍵問題似乎是:

  • 如何設置VS2013 /混合項目結構使用這兩種交替一套單一的源文件的
  • 如何計算在ControlTemplate中的相對大小,即什麼是語法 Width = Button.Width x 1.1設置輝光擴展相對於不在模板中的實際按鈕尺寸,但要在客戶端應用程序UI設計上定義。
  • 如何計算從按鈕,即基色什麼是漸變停止顏色= Button.BackgroundColor×80%+白色的WPF XAML語法×20%相對顏色

這應該是一個非常普遍的需求,但谷歌沒有幫助找到類似上述的東西。

任何幫助與三個關鍵問題中的任何一個將不勝感激。

回答

0

你的要求並不需要定義一個新的ControlTemplate,可以用一個TriggersStyle來實現,如:

<Grid> 
    <Grid.Resources> 
     <Style TargetType="Button"> 
      <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/> 
      <Style.Triggers> 
       <Trigger Property="IsPressed" Value="True"> 
        <Setter Property="RenderTransform"> 
         <Setter.Value> 
          <ScaleTransform ScaleX="0.75" ScaleY="0.75"/> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Grid.Resources> 
    <Button Content="Click Me!" /> 
</Grid> 
  • 如果你App.xaml中定義的Style可以訪問應用程序中的任何地方資源並給出x:Key
  • 使用ScaleTransform的ScaleX和ScaleY是相對值。
  • 您將需要自己的IValueConverter,然後使用轉換器將目標顏色綁定到源顏色。