2009-03-24 4 views
2

Могу ли я использовать generic.xaml в Silverlight, чтобы установить стиль всего TextBlock в приложении?Silverlight generic.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/client/2007" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Style TargetType="TextBlock"> 
     <Setter Property="Foreground" 
       Value="White" /> 
     <Setter Property="FontSize" 
       Value="24" /> 
    </Style> 
</ResourceDictionary> 

Я ожидал, что это работает, но это не :-(

Что самый простой способ применить стили к всему приложению ??

Спасибо, Марк

EDIT

Спасибо за ваш ответ. Я не получаю ошибку, стили просто aren ' t применяется. Все примеры, которые я нашел в Интернете (включая те, которые вы указали), предназначены для создания пользовательских элементов управления. Это я могу сделать, но я хотел бы просто стиль управления по умолчанию:

<TextBlock Text="Style me!!" Grid.Row="2" /> 

Мне нужно добавить ссылку на Generic.xaml от Page.xaml Do ?? Нужно ли мне указывать и ссылаться на стиль generic.xaml как ресурс?

Еще раз спасибо, Марк

+0

Это Silverlight 2, в котором вы работаете? Где хранится ваш generic.xaml? Что не работает - нам нужна дополнительная информация, чтобы лучше диагностировать проблему. –

ответ

5

Настройка стилей обобщенно/автоматически устанавливая TargetType и опуская ResourceKey работает только в WPF, Silverlight не.

Если вы хотите, чтобы стиль был доступен во всем приложении, вы можете добавить его в коллекцию ресурсов в своем App.xaml, но для его использования ему понадобится ax: Key, и вам придется применять его индивидуально как StaticResource привязка к каждому экземпляру вашего целевого типа, который вы хотите использовать.

+0

Согласовано. Это путь и истина. –

+0

Я использовал Themeing XAML из инструментария SL, и это делает то, что нам нужно, а также разрушает дерево управления. –

+2

Это уже не так. SL4 поддерживает неявный стиль. –

0

Что именно не работает? Вы получаете сообщение об ошибке, или ваши текстовые поля просто не получаются?

Ваш метод является правильным способом управления темами, поэтому просто работайте над тем, чтобы сгладить проблемы, с которыми вы сталкиваетесь.

This хороший учебник, как this, хотя отмечают, что в Silverlight 2 вы должны поместить общий файл в

themes\generic.xaml 

, который отличается от многих учебников можно найти (в том числе и приведенные выше

Edit:. Другой учебник here

+0

Дополнительная информация, добавленная выше как ** EDIT ** –

0

Попробуйте что-то вдоль линий

<UserControl.Resources> 
    <Style TargetType="TextBlock" x:Name="tbStyle">   
     <Setter Property="Foreground" Value="White" />   
     <Setter Property="FontSize" Value="24" />  
    </Style> 
</UserControl.Resources> 

Тогда при использовании TextBlock.

<TextBlock Style="{StaticResource tbStyle}" /> 
+0

Он запрашивает широкие стили управления приложениями, вы просматриваете его для отдельного UserControl ... –

+0

Да, это решение недостаточно масштабируется для нашего приложения. У нас много проектов, для которых всем нужна общая тема. Привлечение ресурсов в словарь ресурсов позволяет нам управлять ими из одного места. –

1

Я действительно верю, что это в Silverlight 3. Но другие ребята правы, вам нужно стилизовать каждый из них вручную в Silverlight 2.

+0

В SL3 ничего не изменилось - хотя наследование от одного стиля к другому (с использованием атрибута BasedOn) и изменяемые стили были введены, неявное моделирование все еще доступно только при использовании ISM. –

+0

ISM - это то, как мы это сделали. Использование ресурса XAML, например, темы инструментальных средств SL. –

1

Обратите внимание, что вы можете также использовать ImplicitStyleManager из Silverlight Toolkit, чтобы сделать это:

http://www.codeplex.com/Silverlight/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%203&referringTitle=Home

Примените стиль управления верхнего уровня в иерархии, и он будет распространяться вниз для всех дочерних элементов управления.

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