2012-04-04 119 views
0
<Style x:Key="MyButton" TargetType="{x:Type Border}"> 
     <Style.Resources> 
      <Style TargetType="{x:Type TextBlock}">      
       <Setter Property="FontSize" Value="24"/> 
       <Setter Property="Foreground" Value="{StaticResource FontColor}"/>      
       <Setter Property="HorizontalAlignment" Value="Center"/> 
       <Setter Property="Cursor" Value="Hand"/> 
       <Setter Property="FontWeight" Value="DemiBold" /> 
       <Setter Property="Effect"> 
        <Setter.Value> 
         <BlurEffect Radius="2" ></BlurEffect> 
        </Setter.Value> 
       </Setter> 
       <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="FontWeight" Value="ExtraBold" /> 
        </Trigger>             
       </Style.Triggers> 
      </Style> 
     </Style.Resources> 
    </Style> 

我想創建自己的由邊框和文本塊組成的按鈕樣式。如何將控件添加到我的樣式中?實際上,我想添加一個額外的文本塊,以便我可以模糊背面的文本框,使其看起來像發光。將控件添加到樣式wpf

回答

2

我不確定你想要第二個模糊文本塊的外觀,但下面的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="350" Width="525"> 
<Window.Resources> 
    <Style x:Key="MainTextBlock" TargetType="{x:Type TextBlock}"> 
     <Setter Property="FontSize" Value="24"/> 
     <Setter Property="Foreground" Value="Blue"/> 
     <Setter Property="HorizontalAlignment" Value="Center"/> 
     <Setter Property="Cursor" Value="Hand"/> 
     <Setter Property="FontWeight" Value="DemiBold" /> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="FontWeight" Value="ExtraBold" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

    <Style x:Key="BlurTextBlock" TargetType="{x:Type TextBlock}"> 
     <Setter Property="FontSize" Value="24"/> 
     <Setter Property="Foreground" Value="Blue"/> 
     <Setter Property="HorizontalAlignment" Value="Center"/> 
     <Setter Property="Cursor" Value="Hand"/> 
     <Setter Property="FontWeight" Value="DemiBold" /> 
     <Setter Property="Effect"> 
      <Setter.Value> 
       <BlurEffect Radius="2" ></BlurEffect> 
      </Setter.Value> 
     </Setter> 
    </Style> 

    <Style x:Key="BorderStyle" TargetType="Border"> 
     <Setter Property="BorderBrush" Value="Orange" /> 
     <Setter Property="BorderThickness" Value="2" /> 
    </Style> 

    <Style x:Key="MyButton" TargetType="Button"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <Border Style="{StaticResource BorderStyle}"> 
         <Grid> 
          <TextBlock Style="{StaticResource MainTextBlock}" Text="{TemplateBinding Content}" /> 
          <TextBlock Style="{StaticResource BlurTextBlock}" /> 
         </Grid> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 
<Grid> 
    <Button Style="{StaticResource ResourceKey=MyButton}" Height="30" Width="100" Content="BUTTON" /> 
</Grid></Window> 
0

的按鈕沒有一個Text屬性,它有一個Content屬性。

Content屬性可以是一個字符串,但不能指望它始終是一個字符串。

問題是你想樣式的內容,但你不能。它是一個容器。您可以將圖像或網格或整個xaml層次結構添加到Content屬性。

所以你需要添加一個TextBlock到內容。

<Button HorizontalAlignment="Left" Margin="190,113,0,0" VerticalAlignment="Top" Width="75"> 
    <Button.Content> 
     <Grid> 
      <TextBlock Text="Click Me!" /> 
      <TextBlock Text="Click Me!"> 
       <TextBlock.Effect> 
        <BlurEffect Radius="2" /> 
       </TextBlock.Effect> 
      </TextBlock> 
     </Grid> 
    </Button.Content> 
</Button> 

因此,這似乎並不需要一個風格,它只是需要你的PROPERT內容添加到Button.Content財產。