2016-12-13 51 views
0

爲了幫助我的WPF應用程序中有類似的感覺,我已經在應用程序級別使用樣式開始:如何從App.xaml繼承指定的樣式?

<Application x:Class="MyApplication.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     StartupUri="MainWindow.xaml"> 
<Application.Resources> 
    <Style TargetType="Button"> 
     <Setter Property="Margin" Value="10"/> 
     <Setter Property="Padding" Value="5"/> 
     <Setter Property="MinWidth" Value="60"/> 
    </Style> 

    <Style TargetType="TextBox"> 
     <Setter Property="Margin" Value="10"/> 
     <Setter Property="Padding" Value="5"/> 
     <Setter Property="MinWidth" Value="60"/> 
     <Setter Property="VerticalAlignment" Value="Center"/> 
    </Style> 

    <Style TargetType="TextBlock"> 
     <Setter Property="Margin" Value="10"/> 
     <Setter Property="Padding" Value="5"/> 
     <Setter Property="MinWidth" Value="60"/> 
     <Setter Property="VerticalAlignment" Value="Center"/> 
    </Style> 
</Application.Resources> 

現在,這適用於大多數我控制的很好,但是我想去一個稍微深入一些,爲標題添加特定的樣式類型。從每個窗口我已經做到了這一點:

<Window x:Class="myApp.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="150" Width="300"> 
<Window.Resources> 
    <Style x:Key="HeaderStyle" TargetType="TextBlock"> 
     <Setter Property="Foreground" Value="Gray" /> 
     <Setter Property="FontSize" Value="24" /> 
    </Style> 
</Window.Resources> 
<StackPanel> 
    <TextBlock Style="{StaticResource HeaderStyle}">Header 1</TextBlock> 
    <TextBlock >Some content</TextBlock> 
</StackPanel> 

我如何能做到這一點從App.xaml中?如果要更改格式,請不要觸摸每個窗口。

我覺得我會開始在窗口中添加相同的Style x:Key到應用程序。然後將其添加到窗口

xmlns:app="clr-namespace:myApp" 

如果這是正確的,我不知道該從哪裏去。這裏是我的一個鏡頭,我試圖讓它工作的黑暗

<TextBlock Style="{x:Type app:HeaderTextBlock}">Header 1</TextBlock> 

感謝您的任何建議。

+1

您是否嘗試過'標題1'?當你把樣式放在'' – ganchito55

+0

裏面的時候!我只是認爲這會更困難。 –

回答

1

您在此處遇到的問題: <TextBlock Style="{x:Type app:HeaderTextBlock}">Header 1</TextBlock>是您嘗試添加對App.xaml的引用,但您不必這樣做。

您可以使用此代碼 <TextBlock Style="{StaticResource HeaderStyle}">Header 1</TextBlock>

+0

感謝ganchito55 –