gpt4 book ai didi

c# - 避免可重用 WPF 控件中的 XAML 资源键冲突

转载 作者:太空狗 更新时间:2023-10-30 01:20:29 26 4
gpt4 key购买 nike

我正在开发一个 WPF 控件,但我无法控制将使用它的应用程序。某些 XAML 资源字典键对于我的控件来说显然是唯一的,例如 <Style TargetType="{x:Type MyControl}"> , 所以没有冲突的风险。

但是,我需要使用非唯一对象,例如 BooleanToVisibilityConverter也。如果我用 "BooleanToVisibilityConverter" 添加它关键,包含我的资源字典的控件的使用者可能(并且很可能)已经在他们的代码中定义了一个类似的转换器,可能具有不同的行为。

标准控件以某种方式避免了冲突。有一个 <BooleanToVisibilityConverter x:Key="bool2VisibilityConverter" />Aero.NormalColor.xaml这对于 WPF 应用程序是不可见的。但是,我不知道如何实现这一目标。

如何避免资源名称冲突?如何使我的控件的资源名称为“本地”?

最佳答案

通常,WPF 控件的设计方式不要求客户显式包含任何资源字典。使用 WPF 控件的程序集具有 ThemeInfo 属性:

[assembly: ThemeInfo(
ResourceDictionaryLocation.None,
ResourceDictionaryLocation.SourceAssembly
)]

指定在哪里寻找默认样式,默认样式写入Themes/Generic.xaml文件。

无论如何,由于资源字典键是一个对象,您可以在一些内部静态类中定义绝对唯一的键:

internal static class ResourceKeys
{
public static readonly object BooleanToVisibilityConverter = new object();
}

并在 XAML 中使用它们而不是字符串:

<ResourceDictionary xmlns:local="clr-namespace:YOUR_NAMESPACE_HERE">
<BooleanToVisibilityConverter x:Key="{x:Static local:ResourceKeys.BooleanToVisibilityConverter}" />
</ResourceDictionary>

关于c# - 避免可重用 WPF 控件中的 XAML 资源键冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18947658/

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