Как установить стиль в WPF Window.Resources. - PullRequest
4 голосов
/ 09 февраля 2012

Я хочу создать несколько стилей в Window.Resources.Ниже приведен код, который я пробовал, но он не работает:

<Window.Resources>
    <Style x:Key="StyleOne" TargetType="{x:Type Control}">
        <Setter Property="Control.Background" Value="Blue"></Setter>
        <Setter Property="Control.Height" Value="20"></Setter>
    </Style>
    <Style x:Key="StyleTwo" BasedOn="{StaticResource StyleOne}">
        <Setter Property="Control.Background" Value="Red"></Setter>
        <Setter Property="Control.Height" Value="20"></Setter>
    </Style>
</Window.Resources>
<Button Style="{StaticResource StyleOne}"></Button>
<Button Style="{StaticResource StyleTwo}"></Button>

Выдает ошибку:

Свойство «Содержимое» установлено более одного раза.

Ответы [ 3 ]

6 голосов
/ 09 февраля 2012

Эта ошибка не имеет ничего общего со стилями, окно может содержать только одного дочернего элемента (который устанавливает Content), использовать некоторый контейнер, который может содержать более одного дочернего элемента. например a StackPanel или Grid.

<StackPanel>
     <Button .../>
     <Button .../>
</StackPanel>

(См. Также: Обзор панелей )

4 голосов
/ 09 февраля 2012

установите тип цели для второго стиля

 <Style x:Key="StyleTwo"
           BasedOn="{StaticResource StyleOne}"
           TargetType="{x:Type Control}">
        <Setter Property="Control.Background"
                Value="Red"></Setter>
        <Setter Property="Control.Height"
                Value="20"></Setter>
    </Style>

поместите кнопки в панель стека или сетку

0 голосов
/ 09 февраля 2012

Я думаю, BasedOn наследует свойства от другого типа стиля, и у вас есть

    Property="Control.Background"

устанавливается в обоих стилях, поэтому появляется ошибка

    "The property "Content" is set more than once."
...