Я хочу создать несколько стилей в 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>
Выдает ошибку:
Свойство «Содержимое» установлено более одного раза.
Эта ошибка не имеет ничего общего со стилями, окно может содержать только одного дочернего элемента (который устанавливает Content), использовать некоторый контейнер, который может содержать более одного дочернего элемента. например a StackPanel или Grid.
Content
StackPanel
Grid
<StackPanel> <Button .../> <Button .../> </StackPanel>
(См. Также: Обзор панелей )
установите тип цели для второго стиля
<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>
поместите кнопки в панель стека или сетку
Я думаю, BasedOn наследует свойства от другого типа стиля, и у вас есть
Property="Control.Background"
устанавливается в обоих стилях, поэтому появляется ошибка
"The property "Content" is set more than once."