2016-12-13 6 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? Чтобы не касаться каждого окна, если я хочу изменить форматирование.

Мне кажется, что я начну с добавления того же стиля x: Key, который работал в окне приложения. Затем добавьте это в окно

xmlns:app="clr-namespace:myApp" 

Если это правильно, я не уверен, куда идти. Вот один из моих снимков, в которых я стараюсь сделать его работу

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

Спасибо за любой совет.

+1

Вы пробовали ' Header 1'? когда вы помещаете стиль внутри '' – ganchito55

+0

Это работает !. Я просто предположил, что это будет что-то более трудное. –

ответ

1

Проблема, которая возникает у вас здесь: <TextBlock Style="{x:Type app:HeaderTextBlock}">Header 1</TextBlock> - это то, что вы пытаетесь добавить ссылку на App.xaml, однако вам не обязательно это делать.

Вы можете использовать этот код <TextBlock Style="{StaticResource HeaderStyle}">Header 1</TextBlock>

+0

Спасибо ganchito55 –

 Смежные вопросы

  • Нет связанных вопросов^_^