WPF Prism:InteractionRequestTrigger PopupWindowAction使用MetroWindow

XAML文件

后台:通过重写CreatWindow

另外,在这里还遇到一个问题,因为官方默认控件title不是微软雅黑,我想设置为微软雅黑

官方给了两个方案

1、因为Title是动态绑定的,绑定的规则应该是谁里的近,就绑定哪个Key值。所以通过重写Key,即可实现!

<FontFamily x:Key="MahApps.Fonts.Family.Window.Title">微软雅黑</FontFamily>

但是我发现,我将这段代码写进resourceDictionary,没效果。原因还没找到!

于是,我开始尝试官方给的第二种方法,重写TitleTemplate

\
        <DataTemplate x:key="MahApps.Metro.Styles.MetroWindowTitle">
            <TextBlock Margin="8 -1 1 0"
                       VerticalAlignment="Center"
                       FontFamily="{DynamicResource MahApps.Fonts.Family.Window.Title}"
                       FontSize="{DynamicResource MahApps.Font.Size.Window.Title}"
                       Text="{TemplateBinding Content}"
                       TextTrimming="CharacterEllipsis" />
        </DataTemplate>

然后在后台通过代码引用:

在寻找资源的时候:我使用了两种方式,首先尝试的就是Application.Current.Resources["Key"],但是没有效果,通过断点查看,发现,没有找到自定义的资源。

于是,开始尝试第二种方式FrameworkElement.FindResource("Key"),方法可行!

寻找资源有两种方式:Application.Current.FindResource()  FrameworkElement.FindResource的区别。 

可以在可视树中的几乎任何元素上定义资源。

FrameworkElement.FindResource()将在树上爬,在每个节点上寻找资源,并最终将其一直传递到Application。Application.Current.FindResource []跳过所有这些,直接进入Application上的资源。您几乎总是想使用FindResource(),以便可以在各个点覆盖样式。

以上内容是最近开发碰到的问题,如果有什么不对,还请各位大佬多多指正!

发布了18 篇原创文章 · 获赞 6 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_28368039/article/details/103610606