Динамически менять неявный стиль - PullRequest
1 голос
/ 02 сентября 2011

Прямо сейчас у меня есть некоторые TabItems в моем приложении, которые неявно стилизованы. Я хочу добавить «Ночной режим» в свое приложение и изменить свой стиль. Как мне поступить об этом?

Ответы [ 2 ]

2 голосов
/ 02 сентября 2011

Вы можете сделать это с помощью объединенных словарей.Поместите все свои «нормальные» стили в словарь и по умолчанию добавьте его в ресурсы приложения:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Styles/Normal.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Затем вы можете удалить текущий словарь и динамически загрузить другой:

private void ChangeStyles()
{
    App.Current.Resources.MergedDictionaries.Clear();

    StreamResourceInfo resInfo = App.GetResourceStream(new Uri("Styles/NewStyles.xaml", UriKind.Relative));
    XDocument xaml = XDocument.Load(resInfo.Stream);
    ResourceDictionary resource = XamlReader.Load(xaml.ToString()) as ResourceDictionary;

    App.Current.Resources.MergedDictionaries.Add(resource);
}
1 голос
/ 25 января 2012

Альфонсо был прав в идее ... но вы должны сделать это так в WPF

App.Current.Resources.MergedDictionaries.Clear(); 
Uri uri = new Uri("/Resources/GlassButton5Night.xaml", UriKind.Relative);
var resDict = Application.LoadComponent(uri) as ResourceDictionary;
App.Current.Resources.MergedDictionaries.Add(resDict);

И вы должны сбросить свои MergedDictionaries на нужном уровне

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