Применить тему с Silverlight 4 - PullRequest
3 голосов
/ 02 сентября 2010

Так что я некоторое время пытался заставить их работать в Silverlight 4.

Я добавил ссылку на System.Windows.Controls.Theming.Toolkit и System.Windows.controls.Theming.ShinyRed

Потом я пошел и сделал что-то вроде этого:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input" xmlns:WebbyDraw="clr-namespace:WebbyDraw" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"     x:Class="SilverlightApplication1.MainPage"
    Width="960" Height="700"  mc:Ignorable="d"
    xmlns:shinyRed="clr-namespace:System.Windows.Controls.Theming;assembly=System.Windows.Controls.Theming.ShinyRed" >
<shinyRed:ShinyRedTheme>
<Grid x:Name="LayoutRoot2">
....
</Grid>
</shinyRed:ShinyRedTheme>
</UserControl>

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

1 Ответ

0 голосов
/ 08 октября 2012

Так я использую темы, я также позволяю моим пользователям переходить на предпочитаемую тему -
вы можете заменить ShinyRed.xaml на любой другой файл ресурсов стиля, чтобы поддерживать несколько тем, также можно сделать программно (удалить один ресурс).словарь и добавьте еще один).

В вашем пользовательском элементе управления xmal

xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
<toolkit:Theme x:Name="ThemeContainer">
 <Grid x:Name="LayoutRoot">
... all other controls in the page
</Grid>

Скопируйте все кисти и шрифты, необходимые для блестящей темы, и создайте один единственный файл стилей с именем ShinyRed.xaml (вы можете простоследуйте за включениями в каждом файле, чтобы получить все это в одном файле)

Итак, в вашей ссылке на App.xaml этот недавно созданный xaml adn, то есть он скомпилирован и запущен!

<Application.Resources>
        <ResourceDictionary>

            <ResourceDictionary.MergedDictionaries>                
                <ResourceDictionary Source="Assets/ShinyRed.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
...