2013-02-10 3 views
0

Я использую Silverlight 5, и в одном из моих страниц у меня есть StackPanel, чьи дети я стиль следующим образом:Повторное использование стилей для детей панели в Silverlight

<StackPanel Orientation="Horizontal"> 
<StackPanel.Resources> 
    <Style TargetType="Button"> 
     <Setter Property="FontSize" Value="12"></Setter> 
    </Style> 
    <Style TargetType="TextBlock"> 
     <Setter Property="Foreground" Value="DarkRed"></Setter> 
    </Style> 
</StackPanel.Resources> 
<TextBlock Text="TextBlockText:"></TextBlock> 
<Button Content="FirstButton" Command="{Binding SetLayout}" CommandParameter="FirstOnly"/>   
<Button Content="FirstSecondButton" Command="{Binding SetLayout}" CommandParameter="FirstSecond"/> 
</StackPanel> 

У меня есть еще один StackPanel в на той же странице, как я могу повторно использовать этот стиль без копирования и вставлять его снова и снова?

ответ

0

У вас есть пара вариантов. Поместите его в Object.Resources обоих своих родителей, таких как Window.Resources или UserControl.Resources, или как бы там ни было. Кроме того, это будет отражать все объекты одного и того же типа внутри этого родителя.

Другой способ сделать то же самое, если вы не хотите, чтобы, дать каждому шаблон стиля в x:Key имя и назвать его явно к каждому экземпляру, как <Buttton Style="{StaticResource YourExplicitStyleKeyName}"/>

Или вы можете поместить стили в ResourceDictionary и назовите их явно так же, как указано выше. Надеюсь это поможет.

+0

Извините за поздний ответ, извините, что мне было очень долго отвечать, хотя ваш ответ был быстрым. Первый вариант, к сожалению, не дает эффекта, который я хочу, а второй вариант - это то, чего я хочу избежать, потому что это означает, что я должен вставить атрибут для каждого дочернего атрибута. –

+0

Третий вариант выглядит неплохо, но я столкнулся с некоторыми проблемами с его реализацией. Что я сделал, так я создал ResourceDictionary в теге UserControl.Resources главной страницы и дал ему ключ с именем x: Key = "StackPanelResources", после чего я установил атрибут Resources в стековых панелях {StaticResource StackPanelResources}. Однако я получаю исключение во время выполнения, которое говорит мне, что объект с ключом/именем «StackPanelResources» не найден. Что я делаю не так? –

+0

Собственно, 'ResourceDictionary', как правило, представляет собой отдельный файл, который вы использовали бы, чтобы централизованно распределить все ваши шаблоны, которые вы хотите получить глобально во всем приложении. http://msdn.microsoft.com/en-us/library/cc903952%28v=vs.95%29.aspx –

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