XAML 使用UserControl作为ResourceDictionary

kqhtkvqz  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(139)

是否可以在另一个UserControl中使用我在<UserControl.Resources>中定义的资源,而不使用ResourceDictionary的额外文件。
我有一个UserControl“ViewCostumers”,在<UserControl.Resources>中我定义了一个DataTemplate,其中包含所有客户的ListView。现在我编写了一个UserControl“ViewOverview”,其中将显示相同的ListView。如果可能的话,我希望将ListView保存在文件“ViewCostumer”中。
Thanks in advance
编辑:我试图做的是,我保持在原始文件中的DataTempalte/ListView。然后我想从另一个文件(如资源字典,只有ViewCostumer是UserControl)引用该文件(这是一个UserControl):

< ResourceDictionary> 
< ResourceDictionary.MergedDictionaries>         
< ResourceDictionary Source="View/ViewCostumer.xaml" /> 
< /ResourceDictionary.MergedDictionaries>
< /ResourceDictionary>

字符串

b4wnujal

b4wnujal1#

是否可以在另一个UserControl中使用我在中定义的资源,而无需为ResourceDictionary使用额外的文件。
不,不是的。毕竟,这正是ResourceDictionaries的用途。
我想保留原始文件中的资源(这是一个UserControl)。
如果您打算在除此特定UserControl之外的任何其他控件中使用资源,则不能也不应该这样做。如果您打算在任何其他控件中使用此资源,则在UserControl中定义资源毫无意义。
您应该做的是在ResourceDictionary中定义公共资源,然后按照@Ephraim的建议将其合并到两个控件中。

6l7fqoea

6l7fqoea2#

您可以将资源移动到应用程序范围。
具体请参阅Creating and Consuming Resource Dictionaries in WPF and Silverlight将资源移动到应用程序范围
这个想法是将资源移动到Application.xaml中,以便可以在整个应用程序中使用。

Application.xaml

<Application 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Class="ResourceDictionaryDemo.App"
    xmlns:my="clr-namespace:System;assembly=mscorlib">
    <Application.Resources>
        <LinearGradientBrush x:Key="formBackground" EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="Blue" Offset="0" />
            <GradientStop Color="#460000FF" Offset="1" />
        </LinearGradientBrush>
        <my:String x:Key="applicationTitle">Resource Dictionary Demo</my:String>
        <my:Double x:Key="applicationTitleFontSize">18</my:Double>
        <SolidColorBrush x:Key="applicationTitleForeground">Yellow</SolidColorBrush>
    </Application.Resources>
</Application>

字符串

相关问题