WPF xaml Visual Studio 自动更改我的资源路径问题

3

在WPF应用程序中使用自定义字体时遇到了问题。

为了使用该字体,在我的标签上设置 FontFamily="pack://application:,,,/Resources/#iconfont"。然而,每当我尝试编辑xaml中标签的任何属性时,Visual Studio会自动将字体族路径更改为 FontFamily="iconfont",导致自定义字体无法正常工作。有什么解决办法吗?需要更改的设置吗?这真让人恼火!

进入图像描述

编辑:只要我在标签的属性之间切换,FontFamily就会保持不变。但是如果我去编辑另一种类型的控件的属性,然后再回到标签,FontFamily就会重置为“iconfont”。

1个回答

2

首先,让我们更轻松地生活,并通过将长的包字符串转换为定义的资源,在您的资源字典中(例如app.xaml、window.resources等)使您的混乱更清晰,以便在需要时从任何地方访问它。

因此,我们不必在每个使用它的实例上放置FontFamily="pack://application:,,,/Resources/#iconfont"(顺便说一下,这可能会影响性能),我们可以这样做:

<FontFamily x:Key="IconFont">
   pack://application:,,,/Resources/#iconfont
</FontFamily>

我们将它放在您的资源字典或任何您想要的地方,以便从一个地方引用和加载一次,并提供给其他地方使用。然后,在您的实例中,只需执行以下操作;
<Label FontFamily="{StaticResource IconFont}"/>

现在你的编辑器不仅不会再与你作对,而且你还有一种更清晰的方式来维护它。想象一下,如果你需要更改路径字符串或者决定使用不同的字体包,你是希望在每个实例中都进行更改,还是在一个地方进行更改,然后应用到所有使用该项的地方呢?

希望这可以帮助你,祝好。


1
每个问题都可以通过增加一层间接性来解决。实际上,这是一个非常简洁的建议。当你想从iconfont1切换到iconfont2时,一个字符串替换就会影响整个应用程序。 - Kory Gill
非常好的观点,谢谢。已将其添加到 app.xaml 并将每个实例切换到 FontFamily={StaticResource IconFont}"/。但是,每次我去编辑标签字体的属性时,字体家族仍会切换回 FontFamily="iconfont" - fuzzcan
@fuzzcan 真的吗?好的,这可能听起来很蠢,但你可以尝试一下旧的关闭/重新启动,因为我想不到任何原因会导致这种情况,除非有人在编辑器设置或其他方面进行了一些调整。 - Chris W.
1
@ChrisW。好的,我尝试了重启,似乎它正在工作。我还有另一个Visual Studio实例打开了一个旧的winforms项目,不确定是否会影响它。感谢您的帮助! - fuzzcan
不错的交易,一定要喜欢那些神奇的修复方法,哈哈,很高兴你找到了解决方案,欢迎来到SO! - Chris W.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接