2013-03-08 129 views
0

我正在嘗試創建一個控件,該按鈕可以在鼠標上執行多個動畫。第一個功能是,按鈕應該填充= 2並佔據整個列。我無法做到這一點;如果我試圖減少鼠標懸停按鈕的寬度,我能夠做到,但是當我試圖增加寬度時,按鈕正在展開,但展開的部分不可見。如何實現相同?使用WPF的動態按鈕寬度

我在控制模板中使用了下面的代碼。請修改建議: - 提前

<!--Create a control template for button--> 
<ControlTemplate x:Key="buttonAnimate" TargetType="Button"> 
    <Grid Name="myGrid"> 
     <Button Name="myButton" Background="{TemplateBinding Background }" Width="{TemplateBinding Width}"> 
     </Button> 
    <Border Name="MyBorder" BorderBrush="Orange" BorderThickness="3" CornerRadius="2"></Border> 
    </Grid> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="Background" Value="DarkRed" TargetName="MyBorder"/> 
      <Setter Property="Width" Value="200" TargetName="myButton"/> 
      <Setter Property="Cursor" Value="Hand" TargetName="myGrid"/> 
      <Setter Property="Width" Value="300" TargetName="myButton"/> 
      <Setter Property="Width" Value="300" TargetName="MyBorder"/> 
      <Setter Property="Padding" Value="2" TargetName="myButton"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

感謝。

+0

你應該使用Storyboard來實現這一點。請參閱http://msdn.microsoft.com/en-us/library/ms752312.aspx – failedprogramming 2013-03-08 10:13:56

回答

0

您的Button正在被網格剪裁。 嘗試屬性設置ClipsToBounds以虛假或試試這個:

public class MyButton : Button 
{ 
    protected override Geometry GetLayoutClip(Size layoutSlotSize) 
    { 
     return ClipToBounds ? base.GetLayoutClip(layoutSlotSize) : null; 
    } 
} 

希望它能幫助。