我有一个暴露属性的视图模型,我最初使用该视图模型有一个视图。该视图中包含多个资源,其次是:
<!-- View1.xaml -->
<!-- several resources specific to View1 -->
<StackPanel Orientation="Horizontal">
<!-- left side -->
<!-- right side -->
</StackPanel>
单独留下这一点,我需要提供相同的信息,只显示左侧,并且当将鼠标悬停在最初左侧时,右侧显示为工具提示:
<!-- View2.xaml -->
<!-- same View1 resources -->
<!-- original left side -->
<!-- original left side.ToolTip -->
<!-- original right side -->
<!--/original left side.ToolTip -->
<!--/code for original left side -->
作为第一次尝试,我通过将原始视图复制到新视图并进行更改来完成此操作。
使用它的视图最初使用了这个,但仍然如此:
<DataTemplate ...>
<View1 />
</DataTemplate>
我现在有了一个新的单独视图,其中包含:
<DataTemplate ...>
<View2 />
</DataTemplate>
我不想分别复制/粘贴/维护View1和View2资源,因为它们是相同的。我希望他们在一个地方,所以在这种情况下最好的做法是什么?
我应该将资源移动到单独的文件并在View1.xaml和View2.xaml中引用它们,还是应该修改View1.xaml以支持备用工具提示,并以某种方式从这两个地方调用它:
<!-- file1.xaml -->
<DataTemplate ...>
<View1 />
</DataTemplate>
<!-- file2.xaml -->
<DataTemplate ...>
<View1 Layout="Brief" />
</DataTemplate>
如果是后者,我该如何支持Layout
中的新View1
属性?
请注意,我不需要在运行时在这些视图之间进行更改,因此我认为我不需要DataTemplateSelector
。
感谢。
答案 0 :(得分:-1)
听起来您只需将公共资源放入App.xaml文件的Application.Resources
部分即可。这里定义的所有资源都可以在应用程序范围内使用,因此您的所有视图都可以引用有关完整故事,请参阅MSDN上的How to: Use Application Resources页面,但是从该页面开始:
<Application.Resources>
<Style TargetType="Button" x:Key="GelButton" >
<Setter Property="Margin" Value="1,2,1,2"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="Template">
<Setter.Value>
...
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
在此示例中,应用程序中每个GelButton Style
和Button
中定义的每个Window
都可以使用UserControl
。