2013-04-07 77 views
0

我是WPF的新手,可能很简单。我不明白为什么BorderBrush不显示删除Button。默认情况下,Button不可见,但在鼠标移过Button时显示。当鼠标结束Button时,底层TextBlock显示为应该显示,但不显示Border边框不显示在按钮上

有没有人有关于我如何查看按钮的建议Border

以下是我XAML

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="150" Width="325"> 
<Window.Resources> 
    <Storyboard x:Key="MakeToolbarVisible"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="0.5"/> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 
    <Storyboard x:Key="MakeToobarHidden"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 
    <Style x:Key="Toolbar"> 
     <Style.Triggers> 
      <Trigger Property="UIElement.IsMouseOver" Value="True"> 
       <Trigger.ExitActions> 
        <BeginStoryboard Storyboard="{StaticResource MakeToobarHidden}"/> 
       </Trigger.ExitActions> 
       <Trigger.EnterActions> 
        <BeginStoryboard Storyboard="{StaticResource MakeToolbarVisible}"/> 
       </Trigger.EnterActions> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 
<Grid> 
    <Border> 
     <Grid Margin="0"> 
      <Grid.RowDefinitions> 
       <RowDefinition/> 
       <RowDefinition Height="30"/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition/> 
       <ColumnDefinition Width="30" /> 
      </Grid.ColumnDefinitions> 

      <TextBlock Text="enter some text here!" Margin="8,19.058,8,0" VerticalAlignment="Top" Foreground="#B43C1C26" HorizontalAlignment="Right"/> 
      <TextBox TextWrapping="WrapWithOverflow" Margin="8,19.058,0,2.463" FontSize="11" AcceptsReturn="True" AcceptsTab="True" Visibility="Visible" BorderThickness="0" Background="{x:Null}"/> 
      <WrapPanel Grid.Row="1" Margin="8,8,8,8"> 
       <TextBlock Text="29.8.1995" Foreground="#B43C1C26" FontSize="10" /> 
      </WrapPanel> 

      <StackPanel Grid.Column="1" Margin="5,5,5,8" Grid.RowSpan="2" Opacity="0" Style="{StaticResource Toolbar}"> 
       <Button x:Name="Remove" BorderBrush="DarkRed" BorderThickness="1" Cursor="Hand"> 
        <Button.Template> 
         <ControlTemplate> 
          <TextBlock Text="r" FontFamily="Marlett" FontSize="12"/> 
         </ControlTemplate> 
        </Button.Template> 
       </Button> 
      </StackPanel> 
     </Grid> 
    </Border> 
</Grid> 

回答

0

您与没有边框模板替换按钮默认模板,通过设置按钮控件模板。

要显示边框,加上它在你的控件模板像这样:

 <StackPanel Grid.Column="1" Margin="5,5,5,8" Grid.RowSpan="2" Opacity="0" Style="{StaticResource Toolbar}"> 
      <Button x:Name="Remove" BorderBrush="DarkRed" BorderThickness="1" Cursor="Hand"> 
       <Button.Template> 
        <ControlTemplate> 
         <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> 
          <TextBlock Text="r" FontFamily="Marlett" FontSize="12"/> 
         </Border> 
        </ControlTemplate> 
       </Button.Template> 
      </Button> 
     </StackPanel> 

通过TemplateBinding可以绑定到模板化控件的属性,在这种情况下,按钮的属性。

+0

谢谢,我学到新的东西。您的解决方案按预期工作 – user2254699 2013-04-08 14:19:57

0

您已覆盖您的ButtonControlTemplate,因此您将丢失按钮的默认模板。

根据你的代码,我所看到的是你想为你的按钮上的文字,你可以在不重写模板这样实现FontFamilyFontSize -

 <StackPanel Grid.Column="1" Margin="5,5,5,8" Grid.RowSpan="2" Opacity="0" 
        Style="{StaticResource Toolbar}"> 
      <Button x:Name="Remove" BorderBrush="DarkRed" 
        BorderThickness="1" Cursor="Hand" Content="r" 
        FontFamily="Marlett" FontSize="12"/> 
     </StackPanel> 
0

如果您希望按钮看起来像一个普通的按钮,你不应该retamplte它 只是设置要改变,像这样的属性:

<StackPanel Grid.Column="1" Margin="5,5,5,8" Grid.RowSpan="2" Opacity="0" Style="{StaticResource Toolbar}"> 
    <Button x:Name="Remove" BorderBrush="DarkRed" BorderThickness="1" Cursor="Hand" 
          FontSize="12" FontFamily="Marlett" Content="r"/> 

    </StackPanel>