У меня сейчас проблема.Я использую WPF. Темы, которые я нашел в codeplex, он позволяет мне менять тему моего приложения.
Итак, я импортировал проект и получил все нормально, но для некоторого контроля, скажем, у моего treeViewItem, у меня былоему уже задан стиль, который переопределяет глобальные стили.
У меня есть следующий код после исследования, но он все равно не будет работать.
<TreeView Name="_tvTreeView" Grid.Row="1" >
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource {x:Type TreeViewItem}}">
<EventSetter Event="MouseDoubleClick" Handler="tvTreeView_PreviewMouseDoubleClick"/>
<EventSetter Event="MouseDown" Handler="tvTreeView_MouseDown"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
На основе работ, если я вручную добавлювосстановить файл в словаре слияния app.xaml моего основного проекта.
Но проект WPF.Themes позволяет мне динамически изменять тему, выполняя это.
public static void ApplyTheme(this ContentControl control, string theme)
{
ResourceDictionary dictionary = ThemeManager.GetThemeResourceDictionary(theme);
control.Resources.MergedDictionaries.Clear();
if (dictionary != null)
control.Resources.MergedDictionaries.Add(dictionary);
}
Имея приведенный выше код, не объединяет глобальные стили и мои установщики событий.Если бы я вручную ссылался на тему в app.xaml, то «BasedOn» включался бы и работал, но «BasedOn», похоже, не работал, если я устанавливал mergedDictionaries динамически.
Есть ли способ получитьэто работает без добавления темы в app.xaml.
Спасибо и С уважением,