2010-06-14 26 views
0

我縮小了我想讓我的wpf按鈕看起來像使用XAML的樣子。WPF:將XAML捕獲到子類控件中

現在我想建立一個子歸按鈕控件,我可以重新使用瓦特/輸出不必編寫所有的標記

<Button Click="TestGridColumnButton_Click" Background="Transparent" Width="16" Height="16" Margin="0,0,0,0" Padding="0,0,0,0" BorderBrush="{x:Null}"> 
    <Button.Template> 
     <ControlTemplate> 
      <Image HorizontalAlignment="Center" VerticalAlignment="Center" Style="{StaticResource SourceStyle}" /> 
     </ControlTemplate> 
    </Button.Template> 
</Button> 

如何我將使用C#所有這些屬性?

+0

嗯... 我想我可以創建一個WPF用戶控件,通過此按鈕,並重新使用.. 會是這樣preferrable? – 2010-06-14 18:54:42

回答

0

有多種方式做到這一點:

[注:對於這個答案的目的,我假設你正在創建一個簡單的窗口按鈕]

1)不能再利用和一種骯髒的方式將是分配窗口的加載事件中的所有屬性。通過命名按鈕對象,您可以獲取對該對象的引用並將值分配給屬性,註冊到事件並分配模板。我假設你遇到了模板屬性的問題。要在代碼中創建模板,您可以使用FrameworkElementFactory class(已棄用)或使用XamlReader.Load方法(這是首選方法)。

2)創建一個自定義控件,在generic.xaml文件中爲其創建自定義模板。您可以命名自定義模板中的元素,並通過重寫OnApplyTemplate方法來檢索對它們的引用。然後,您可以創建直接映射到模板中的圖像元素的公共屬性,或者將該圖像元素作爲控件中的公共屬性公開。使用這種方法,您可以使用公開的屬性在C#代碼中設置屬性。

3)你也可以定義多個樣式並在它們之間切換c#代碼。當我們使用JavaScript切換類時,此方法與HTML中的工作方式相似。

希望這會有所幫助!

+0

這裏是對Xaml.Load方法的引用:http://msdn.microsoft.com/en-us/library/ms590388.aspx – decyclone 2010-06-14 19:38:06

+0

很酷的感謝.. 嗯我記得一個樣式可以創建一個模板它的一面..我只是從來沒有這樣做:) – 2010-06-14 19:44:54

3

爲您的按鈕創建樣式並添加到全局資源字典中。

<Application x:Class="TestApp.App" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    StartupUri="Window1.xaml"> 
    <Application.Resources> 
     <ResourceDictionary> 
      <Style x:Key="MyIconButtonStyle" TargetType="{x:Type Button}"> 
      <Setter Property="Background" Value="Transparent" /> 
       <Setter Property="Width" Value="16" /> 
       <Setter Property="Height" Value="16" /> 
       <Setter Property="Margin" Value="0,0,0,0" /> 
       <Setter Property="Padding" Value="0,0,0,0" /> 
       <Setter Property="BorderBrush" Value="{x:Null}" /> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type Button}"> 
          <Image HorizontalAlignment="Center" VerticalAlignment="Center" Source="buttonImage.jpg"/> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 

使用這樣的風格:

<Button Style="{StaticResource MyIconButtonStyle}" Click="Button_Click"/>