Silverlight Toolkit — дочернее окно с темой

#silverlight #silverlight-4.0 #silverlight-toolkit

#silverlight #silverlight-4.0 #silverlight-toolkit

Вопрос:

На странице форума silverlight, которую я нашел, у меня создалось впечатление, что дочернее окно, созданное в исходном коде, будет подхватывать тему остальной части страницы; это происходит только тогда, когда вы наследуете от ChildWindow, что это больше не так.

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

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

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

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

Есть ли какой-нибудь способ заставить это работать?

Ответ №1:

Вам нужно будет установить желаемую глобальную тему в 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. Бах — если я это сделаю, смогу ли я по-прежнему динамически переключать темы во время работы приложения, как я могу с темой, объявленной на странице??

2. Это сработало отлично. Мне даже ничего не нужно в файле app.xaml. Просто устанавливаю тему. Установить applicationthemeuri (MyApp, myThemeUri) в моем коде — это то, что мне было нужно. Я пытаюсь создать классические темы со списком, из которых пользователь может выбирать.