2013-04-07 76 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>