2011-04-27 4 views
2

Из страницы форума silverlight, которую я нашел, у меня создалось впечатление, что ChildWindow, созданный в коде за , будет забрать тему остальной части страницы; это только когда вы наследуете от ChildWindow, что это уже не так.Silverlight Toolkit - ChildWindow with Theme

По какой-то причине это не происходит для меня. Вот моя тема элемент:

<wp:Theme x:Name="ThemeContainer" ThemeUri="/System.Windows.Controls.Theming.BubbleCreme;component/Theme.xaml"> 

А вот обработчик события для кнопки, которые я использую, чтобы попытаться создать ChildWindow. Окно всплывает, но тема не применяется:

private void Button_Click(object sender, RoutedEventArgs e) { 
     ChildWindow cw = new ChildWindow() { Height = 250, Width = 200 }; 
     cw.Show(); 
    } 

Есть ли способ заставить это работать?

ответ

3

Вы должны установить нужную глобальную тему в App.xaml и объявить его в качестве темы приложения:

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      x:Class="MyApp" 
      xmlns:thm="MyThemeNamespace" 
      thm:MyTheme.IsApplicationTheme="True" 
      > 
    <Application.Resources> 

    </Application.Resources> 
</Application> 

Для установки темы приложения динамически, вы можете попробовать статическую

Theme.SetApplicationThemeUri(myApp, myThemeUri); 
+1

Bah - если я это сделаю, смогу ли я по-прежнему динамически переключаться между темами, пока приложение работает, как я могу, с темой, объявленной на странице? –

+0

@Adam Rackis Я думаю, что вы можете, я обновил ответ. – herzmeister

+0

Это сработало отлично. Мне даже не нужно ничего в файле app.xaml. Просто настройка Theme.SetApplicationThemeUri (myApp, myThemeUri) в моем коде была тем, что мне было нужно. Я пытаюсь сделать классические темы combobox o, которые пользователь может выбрать. –

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