WPF XAML全局引用

4

有没有办法重复使用第三方控件引用?

例如,我在我的App.xaml中引用了这个控件:

xmlns:cust="clr-namespace:ThirdParty.Controls;assembly=ThirdParty.Controls"

我不想在每个需要库中控件的页面/控件上重复此第三方控件xml命名空间。

有没有办法集中这些参考文献并使用此处定义的前缀?每个控件都有不同的前缀的可能性也令人担忧。在asp.net中,您会在web.config中放置一个引用,并且它可以全局使用,我只是想看看WPF中是否有类似的方法。

2个回答

2

我考虑了两个选项:

1)将该控件包装到一个用户控件中,然后在所有需要使用的地方使用您的用户控件。

2)在某处将第三方控件声明为资源,然后在其他地方使用DynamicResource引用它。

第二个选项可以按照以下方式实现:

无论在何处需要第三方控件,请像下面这样放置ContentControl:

<ContentControl Template="{DynamicResource thirdPartyControlTemplate}" />

控件模板将在资源文件中或者在App.Xaml中,如下所示。
  xmlns:thridParty="clr-namespace:WpfCustomControlLibrary1;assembly=WpfCustomControlLibrary1"                >
<Application.Resources>
    <ControlTemplate x:Key="thirdPartyControlTemplate" TargetType="{x:Type ContentControl}">
        <thridParty:ThirdPartyControl />
    </ControlTemplate>
</Application.Resources>

你可以看到命名空间声明总是在这个资源文件中,你可以在任何地方使用那个控件控制。

谢谢,这是我能够实现全局包含的最接近方法。虽然我可能会忽略每个窗口的包含并处理它。 - Jab

0

以内置的标签控件模板为例:

<ControlTemplate TargetType="Label" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:s="clr-namespace:System;assembly=mscorlib" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

显示模板是这类问题的极佳资源。希望能对您有所帮助。


我不确定这会如何帮助。我不想改变第三方控件的模板,我想从中央xmlns导入引用相同的控件。如果这在某种程度上对我有所帮助,请详细说明。 - Jab
啊,我误读了你的问题。我以为你有一个需要第三方库的用户或自定义控件。实际上,你要找的是在XAML中进行全局包含的方法。 - Bryan Anderson
是啊,很遗憾没有解决方案。在Blend中做某些事情并不是问题,因为它会为您完成所有操作,但是Visual Studio缺乏这一点。 - Jab

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