Я попытался добавить все свои ресурсы в файл шаблона ресурса и включить их в динамические ресурсы (точно так же, как Blend делает это тоже). Программа компилируется и работает нормально, но стили вообще не применяются. Причудливо, они применяются в предварительном просмотре, однако. Это код, у меня есть:Почему ресурсы стиля из ResourceDictionary не применяются?
// MyUserControl.xaml
<UserControl x:Class="MyProject.MyUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d"
d:DesignHeight="411" d:DesignWidth="645">
<Grid>
<Button Content="Click here" Style="{DynamicResource MyButtonStyle}" />
</Grid>
</UserControl>
-
// MyStyleTemplates.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FF263B5B" Offset="0"/>
<GradientStop Color="#FF65FD43" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
-
// App.xaml
<Application x:Class="MyProject.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MyProject;component/MyStyleTemplates.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
Я попытался сделать то же самое, но затем положить Style
код в <UserControl.Resources>
тега в MyUserControl.xaml
файл, и это отлично сработало, поэтому в самом стиле ничего не происходит. Почему это происходит?
Edit:
Как это может иметь что-то делать с этим, структура папок может быть немного нетрадиционный, следующим образом:
MyProjectFolder/
MyProject.csproj
MyStyleTemplates.xaml
Main/
App.xaml
GUI/
MyUserControl.xaml
MyUserControl.xaml.cs
это позволило ли?
Попробуйте использовать StaticResource, а не Dynamicresource –
Я не смог воспроизвести проблему с кодом, представленным здесь. Является ли ресурсный словарь MyStyleTemplates в той же сборке, что и app.xaml? Вы используете UserControl? –
Использование 'StaticResource' приводит к сбою программы. Я обновил вопрос и включил структуру файла. Есть ли там вещи, которые не допускаются? – Yellow