2014-01-07 2 views
0

Один из моего Грида в настоящее время начинается со следующим кодом:WPF: Перемещение панели ресурсов в файл словарь

<Grid x:Name="Top_GRID" Margin="4.953,10" Width="817.28"> 
    <Grid.Resources> 
    <Style TargetType="TextBlock"> 
     <Setter Property="VerticalAlignment" Value="Center"/> 
     <Setter Property="Margin" Value="3"/> 
     <Setter Property="Background" Value="Red" /> 
    </Style> 
    <Style TargetType="TextBox"> 
     <Setter Property="VerticalAlignment" Value="Center"/> 
     <Setter Property="Margin" Value="3"/> 
    </Style> 
    <Style TargetType="Button"> 
     <Setter Property="VerticalAlignment" Value="Center"/> 
     <Setter Property="Margin" Value="3"/> 
    </Style> 
</Grid.Resources> 

Просто чтобы прояснить - я хочу объявить Сетки, в котором все TextBlocks являются имея Значение свойства «Красный». Все Кнопки поля установлены на «3» и так далее. Я хотел бы переместить определение ресурса в файл словаря.
Должен ли я каким-то образом обернуть его как Стиль? Если так, у меня будет рекурсивная декларация стиля, которая (я думаю, незаконна).
Звучит просто, но я не могу найти способ сделать это.

ответ

1

Попробуйте

<Style x:Key="Grid_ControlStyle" TargetType="Grid"> 
     <Style.Resources>     
       <Style TargetType="TextBlock"> 
        <Setter Property="VerticalAlignment" Value="Center"/> 
        <Setter Property="Margin" Value="3"/> 
        <Setter Property="Background" Value="Red" /> 
       </Style> 
       <Style TargetType="TextBox"> 
        <Setter Property="VerticalAlignment" Value="Center"/> 
        <Setter Property="Margin" Value="3"/> 
       </Style> 
       <Style TargetType="Button"> 
        <Setter Property="VerticalAlignment" Value="Center"/> 
        <Setter Property="Margin" Value="3"/> 
       </Style>    
     </Style.Resources> 
    </Style> 
+0

Точно то, что я хотел! Tx – Shaul

+0

Благодарим вас за добавление! –

0

Вам нужно поместить все стили для кнопки, TextBox и т. Д. В файл resourceDictionary. Затем добавьте этот файл в ресурсах приложения:

<Application x:Class="Aplication.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     > 
<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Resources\YourResource.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

Тогда в XAML вы будете иметь возможность использовать его как этот

<TextBlock Grid.Column="1" Grid.Row="1" Text="bla bla" Style="{DynamicResource YourStyle}"/> 

Наконец ваш стиль должен выглядеть

<Style x:Key="StyleName" TargetType="{x:Type TextBlock}"> 
    <Setter Property="Margin" Value="3,3,3,3"/> 
    <Setter Property="FontFamily" Value="Arial"/> 
    <Setter Property="FontSize" Value="12pt"/> 
    <Setter Property="HorizontalAlignment" Value="Center"/> 
    <Setter Property="VerticalAlignment" Value="Center"/> 
</Style> 

Надежда Thats что вы искали.

+0

Исходный код объявлял стили для элементов сетки: «Все текстовые блоки в этой сетке должны быть в стиле ...». Ваше решение требует от меня устанавливать стили на элементы управления независимо от их положения внутри сетки. – Shaul

+0

@Shaul здесь у вас есть один стиль, который вы можете использовать для всех текстовых блоков в своем приложении – Sasha

0

Перейди через понятие словаря ресурсов в WPF. Любой стиль, цвета, шрифты и т. Д., Что связано с внешним видом приложения, которое вы хотите повторить в нескольких экранах вашего приложения shpuld, можно поместить в словарь ресурсов.

x: Ключ - это свойство, которое может использоваться для доступа к стилю в любом месте приложения. Чтобы ваш ресурсный словарь был доступен для приложения, разместите его. App.xaml

+0

Правда. Вы можете определить именованные стили и использовать их позже. Я хотел определить ** стиль ** по умолчанию, который охватывает элементы под сеткой. Это немного отличается. – Shaul

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