#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) в моем коде — это то, что мне было нужно. Я пытаюсь создать классические темы со списком, из которых пользователь может выбирать.