gpt4 book ai didi

c# - 将 ResourceDictionary 应用于 WPF 框架中的页面

转载 作者:行者123 更新时间:2023-11-30 12:44:58 27 4
gpt4 key购买 nike

我在 WPF 中有一个 Window,它只包含一个 Frame 元素。框架显示一个页面;显示哪个页面会根据用户交互而变化。

<Window x:Class="MyWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="720" Width="1280">
<Grid>
<Frame Source="{Binding Source={StaticResource MainPageIntent}, Path=Path}"/>
</Grid>
</Window>

我希望出现在该框架中的所有页面共享一个通用的资源字典,以便它们都可以采用通用的方式设置样式。

现在我在这个窗口加载的每个页面中都有这样的东西:

<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ResourceDictionaries/BaseControlStyles/MenuStyle.xaml"/>

我希望我可以在 Window 上设置资源字典,它们将“继承”那些资源,但情况似乎并非如此。我尝试过类似的方法,但是在 MenuStyle.xaml 中找到的样式未应用于框架加载的页面内的控件:

<Window x:Class="MyWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="720" Width="1280">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ResourceDictionaries/BaseControlStyles/MenuStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Frame Source="{Binding Source={StaticResource MainPageIntent}, Path=Path}"/>
</Grid>
</Window>

是否有办法在窗口级别定义样式,以便子框架中加载的所有页面都将使用这些样式?

注意:我不想将这些样式应用于我的应用程序中的所有窗口,因此将此 ResourceDictionary 放入我的 App.xaml 中似乎不是一个有效的解决方案。

最佳答案

如果想写一次避免代码重复,可以写在code behind中。在 ContentRendered 框架上,您可以编写代码以将资源添加到正在加载的页面。

<Frame Name="fr_View" ContentRendered="fr_View_ContentRendered"/>


private void fr_View_ContentRendered(object sender, System.EventArgs e)
{
ResourceDictionary myResourceDictionary = new ResourceDictionary();
myResourceDictionary.Source = new Uri("Dictionary1.xaml", UriKind.Relative);
(fr_View.Content as System.Windows.Controls.Page).Resources.MergedDictionaries.Add(myResourceDictionary);
}

看看这个链接: Set up application resources from code

关于c# - 将 ResourceDictionary 应用于 WPF 框架中的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26182332/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com