2012-04-21 218 views
1

我的控件模板和樣式:WPF創建圖像按鈕

<ControlTemplate TargetType="{x:Type Button}" x:Key="ImageButtonTemplate"> 
     <Image Source="..//..//images//ok.png" 
          Width="{TemplateBinding Width}" 
          Height="{TemplateBinding Height}"/> 

    </ControlTemplate> 

    <Style TargetType="{x:Type Button}" x:Key="ImageButton"> 
     <Setter Property="Template" Value="{StaticResource ImageButtonTemplate}"/>       
    </Style> 

    <Button Style="{StaticResource ImageButton}" /> 

按鈕不可見... 我失去了什麼?

編輯:

試圖定義面板的高度和寬度,按鈕圖像仍然不可見.. 一點幫助。

<ControlTemplate TargetType="{x:Type Button}" x:Key="ImageButtonTemplate"> 
     <Grid> 
      <Image Source="..//images//ok.png" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" />    
     </Grid> 
    </ControlTemplate> 

並不是我想要放在那裏嗎?
我做錯了什麼?

+0

您沒有設置寬度的高度。根據容器的類型,您需要它以便可見(例如,如果使用堆棧面板而不是網格)。 – 2012-04-21 00:08:28

+0

@RandolfRincón-Fadul 我該如何設置它們? 我以爲我需要添加一個contentpresenter並在那裏做 但它不允許我在模板中添加一個? 你能否介紹我一個很好的例子? – 2012-04-21 00:18:56

+0

@RandolfRincón-Fadul看看我的編輯請 – 2012-04-21 16:23:54

回答

2

您沒有設置寬度和高度。根據容器的類型,您需要它以便可見(例如,如果使用堆棧面板)。

在這裏你有另一個相關的問題來解釋它。

WPF TriState Image Button

編輯:

我創建一個新項目,並啓動窗口中寫道:

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Class="WpfApplication.MainWindow" 
    x:Name="Window" 
    Title="MainWindow" 
    Width="640" Height="480"> 
    <Window.Resources> 
    <ControlTemplate TargetType="{x:Type Button}" x:Key="ImageButtonTemplate"> 
     <Grid> 
      <Image Source="MB_0024_YT2.png" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" />    
     </Grid> 
    </ControlTemplate> 
    <Style TargetType="{x:Type Button}" x:Key="ImageButton"> 
     <Setter Property="Template" Value="{StaticResource ImageButtonTemplate}"/>       
    </Style> 
    </Window.Resources> 
    <Grid x:Name="LayoutRoot"> 
    <Button Style="{StaticResource ImageButton}" Width="120" Height="120" Click="Button_Click" /> 
    </Grid> 
</Window> 

現在,它的工作。按鈕它是可見的,並且在事件處理程序中也正在工作。

事件處理程序:

private void Button_Click(object sender, System.Windows.RoutedEventArgs e) 
    { 
     MessageBox.Show("Hello"); 
    } 
+0

我認爲我的問題是我指定路徑的方式。 當我給完整的路徑,它顯示圖像.. 它會知道從應用程序根目錄找到圖像文件夾? Source =「Images/ok.png」還是我需要指定它像 「..//////Images//ok.png」 ? – 2012-04-21 21:55:49

+0

您可以直接從根目錄指定資源(不含//)。 – 2012-04-22 17:34:01