Тёмная и свтела тема wpf c#
У меня появилась проблема у меня есть ResourceDictionary для тёмной:
<Style TargetType="Border"
x:Key="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding Source={x:Static properties:Settings.Default}, Path=ColorMode}" Value="Dark">
<Setter Property="Background" Value="#051b2e"/>
</DataTrigger>
</Style.Triggers>
</Style>
и свётлой темы:
<Style TargetType="Border"
x:Key="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding Source={x:Static properties:Settings.Default}, Path=ColorMode}" Value="Light">
<Setter Property="Background" Value="#FFD8EFFB"/>
</DataTrigger>
</Style.Triggers>
</Style>
я добавил их в App.xaml:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Themes/Dark.xaml"/>
<ResourceDictionary Source="Themes/Light.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
также прибиндил к MainWindow
<Border CornerRadius="10"
Style="{StaticResource Border}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="75*"/>
<ColumnDefinition Width="239*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="63*"/>
<RowDefinition Height="437*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="1" Grid.ColumnSpan="2" Margin="0,0,685,0">
<RadioButton Content="Options"
Height="50"
Style="{StaticResource RadioButton}"
Command="{Binding OptionsButton}"/>
</StackPanel>
<ContentPresenter Content="{Binding CurrentPage}"
Grid.Column="1"
Margin="5"
Grid.RowSpan="2" />
</Grid>
</Border>
установил по умолчанию Light
и в коде меняю его
public static ICommand Light
{
get
{
return new DelegateCommand((obj) =>
{
Properties.Settings.Default.ColorMode = "Light";
Properties.Settings.Default.Save();
});
}
}
public static ICommand Gray
{
get
{
return new DelegateCommand((obj) =>
{
Properties.Settings.Default.ColorMode = "Dark";
Properties.Settings.Default.Save();
});
}
}
и получается так что когда я запускаю приложение вижу это

когда свтелая тема то всё работает, а когда тёмная то такое:
елси кто знает, буду рад любой помощи)
Ответы (1 шт):
Автор решения: vasyleoo
→ Ссылка
Может кому то пригодиться код который работает на WPF
public ICommand Dark
{
get
{
return ChangeTheme("Themes\\DarkMode.xaml");
}
}
private ICommand ChangeTheme(string inputUri)
{
return new DelegateCommand((obj) =>
{
Application.Current.Resources.MergedDictionaries.RemoveAt(0);
var uri = new Uri(inputUri, UriKind.Relative);
var resDict = new ResourceDictionary() { Source = uri };
Application.Current.Resources.MergedDictionaries.Add(resDict);
});
}

