2010-09-22 2 views
3

Кажется, что-то подобное не допускается. Любое обходное решение?Basing A Style Off Динамический ресурс

<Style x:Key=MyDerivedStyle TargetType="{x:Type Button}" 
     BasedOn="{DynamicResource GlobalButtonStyle}" />  

    <Style x:Key="GlobalLabelStyle" TargetType="{x:Type Button}"> 

Я получаю ошибку: A «DynamicResourceExtension» не может быть установлен на свойство «BasedOn» типа «Стиль». «DynamicResourceExtension» может быть установлен только в DependencyProperty объекта DependencyObject.

Если я изменю его на StaticResource, стиль не появится в моем элементе управления.

ответ

3

Два вопроса здесь:

Во-первых, ваш глобальный стиль должен предстать перед производном стиль (либо в том же разделе ресурсов, или путем объединения в соответствующем ResourceDictionary, прежде чем пытаться определить производный стиль

.

Кроме того, вы должны явно определить стиль в кнопке:.

<Button x:Name="btnOne" 
     Style="{StaticResource MyDerivedStyle}" 
     Content="Derived" /> 

Обратите внимание, что в этом случае вы не создаете динамический ресурс (т.е. тот, который должен быть перезагружен) Он статичен, как Стиль, который используется для BasedOn должно быть.

1

Во-первых, вам необходимо поместить Based стиль и после этого стиля, что с помощью этого Bass Стиль:

<Style x:Key="ComboBoxItemStyleSpecial" 
     BasedOn="{StaticResource ComboBoxItemStyleDefault}" 
     TargetType="{x:Type ComboBoxItem}"> 
    <Setter Property="BorderBrush" 
      Value="Lime" /> 
    <Setter Property="BorderThickness" 
      Value="3" /> 
</Style> 
<Style x:Key="ComboBoxItemStyleSpecialFont" 
     BasedOn="{StaticResource ComboBoxItemStyleSpecial}" 
     TargetType="{x:Type ComboBoxItem}"> 
    <Setter Property="FontSize" 
      Value="40" /> 
    <Setter Property="FontFamily" 
      Value="Aharoni" /> 
</Style> 
Смежные вопросы