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(),以便可以在各个点覆盖样式。

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值