2010-02-01 71 views
0

爲什麼不這項工作:WPF設定值

<Button Width="200" Height="50"> 
    <Button.Style> 
    <Style TargetType="Button"> 
     <Setter Property="Height" Value="{Binding RelativeSource={RelativeSource Self}, Path=Height}"/> 
     <Setter Property="Background" Value="Blue"/> 
     <Style.Triggers> 
       <Trigger Property="Button.IsPressed" Value="true"> 
        <Setter Property="Background" Value="green"/> 
        <Setter Property="Height" Value="20"/> 
       </Trigger> 
     </Style.Triggers> 
    </Style> 
    </Button.Style> 

<Button.Template> 
    <ControlTemplate> 
     <Canvas x:Name="MainCanvas" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"> 
      <Border 
      Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" 
         x:Name="Border" 
         CornerRadius="2" 
         BorderThickness="1" 
         Background="{TemplateBinding Background}" 
         BorderBrush="black"> 
       <ContentPresenter 
       Margin="2" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center" 
       RecognizesAccessKey="True"/> 
      </Border> 
     </Canvas> 
    </ControlTemplate> 
</Button.Template> 
Hello 
</Button> 

像這樣:

<Button Width="200" > 
<Button.Style> 
    <Style TargetType="Button"> 
     <Setter Property="Height" Value="50"/> 
     <Setter Property="Background" Value="Blue"/> 
     <Style.Triggers> 
       <Trigger Property="Button.IsPressed" Value="true"> 
        <Setter Property="Background" Value="green"/> 
        <Setter Property="Height" Value="20"/> 
       </Trigger> 
     </Style.Triggers> 
    </Style> 
</Button.Style> 
<Button.Template> 
    <ControlTemplate> 
     <Canvas x:Name="MainCanvas" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"> 
      <Border 
      Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" 
         x:Name="Border" 
         CornerRadius="2" 
         BorderThickness="1" 
         Background="{TemplateBinding Background}" 
         BorderBrush="black"> 
       <ContentPresenter 
       Margin="2" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center" 
       RecognizesAccessKey="True"/> 
      </Border> 
     </Canvas> 
    </ControlTemplate> 
</Button.Template> 
Hello 
</Button> 

我想要的按鈕,當我按下它縮小。這是一個自定義控件的原型,所以Style將在稍後提供給Generics.xmal文件。爲什麼它不顯示Button上的'Hello'字符串?

回答

2

字符串「Hello」不會在按鈕上顯示,直到您添加TargetType="Button"到控件模板標籤,否則將ContentPresenter不知道它在處理:

<ControlTemplate TargetType="Button"> 

至於你的風格綁定,你試圖做的是將一個屬性綁定到它自己 - 這沒有任何意義。你想達到什麼目的?

+0

TargetType爲第一個問題做了訣竅。要做一個自定義控件,我可以設置一個高度,並且我希望寬度在某個觸發器上改變。因此,將會是一個genric.axml文件,它的開頭是這樣的: