是否可以在不为ResourceDictionary使用额外文件的情况下,在另一个UserControl中使用我在中定义的资源。
我有一个UserControl "ViewCostumers“,在中我定义了一个包含所有客户ListView的DataTemplate。现在,我编写了一个UserCotnrol "ViewOverview“,其中将出现相同的ListView。如果可能的话,我希望将LsitView保存在"ViewCostumer“文件中。
提前感谢
编辑:我尝试做的是将DataTempalte/ListView保留在原始文件中。然后,我想从另一个文件(如资源字典,只有ViewCostumer是UserControl)中引用该文件(它是一个UserControl):
< ResourceDictionary>
< ResourceDictionary.MergedDictionaries>
< ResourceDictionary Source="View/ViewCostumer.xaml" />
< /ResourceDictionary.MergedDictionaries>
< /ResourceDictionary>发布于 2017-05-17 18:09:03
是否可以在另一个UserControl中使用我在中定义的资源,而无需为ResourceDictionary使用额外的文件。
不,它不是。毕竟,这正是ResourceDictionaries的用途。
我想将资源保存在原始文件中(这是一个UserControl)。
如果您打算在除此特定UserControl之外的任何其他控件中使用资源,则不能也不应该使用。如果您打算在任何其他控件中使用一个资源,那么在UserControl中定义该资源是没有意义的。
您应该做的是在ResourceDictionary中定义公共资源,然后按照@Ephraim的建议将其合并到两个控件中。
发布于 2017-05-17 16:39:44
您可以将资源移动到Application作用域。
请查看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>https://stackoverflow.com/questions/44019459
复制相似问题