Silverlight generic.xaml - PullRequest
       15

Silverlight generic.xaml

2 голосов
/ 24 марта 2009

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

<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>

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

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

Спасибо, Mark

EDIT

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

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

Нужно ли добавлять ссылку на файл generic.xaml из page.xaml ?? Нужно ли называть и ссылаться на стиль generic.xaml как на ресурс?

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

Ответы [ 6 ]

9 голосов
/ 29 января 2010

В Silverlight 4 вы можете использовать неявное моделирование !

5 голосов
/ 24 марта 2009

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

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

1 голос
/ 18 августа 2009

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

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

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

1 голос
/ 24 марта 2009

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

0 голосов
/ 24 марта 2009

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

<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 голосов
/ 24 марта 2009

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

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

Это хороший учебник, как и это , хотя обратите внимание, что в Silverlight 2 вам нужно поместить общий файл в

themes\generic.xaml

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

Редактировать: Еще один учебник здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...