我的应用程序有大约15种不同的UserControl,它们在运行时统一加载到内容区域。
我的项目是100%符合MVVM的,所以我在每个UserControl的XAML中都插入了以下XAML:
<UserControl
...
xmlns:intr="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
>
<intr:Interaction.Triggers>
<intr:EventTrigger EventName="Loaded">
<intr:InvokeCommandAction Command="{Binding ViewLoadedCommand}"/>
</intr:EventTrigger>
</intr:Interaction.Triggers>
<!-- Rest of UserControl content here -->
</UserControl>
显然这不太理想,也是对DRY的违反。
将此XAML应用于这组UserControls的最佳方法是什么? (但不是每个 UserControl,因此简单的<Style Type="UserControl" />
是不合适的。)
答案 0 :(得分:0)
你可以创建一个&#34; base-load&#34;使用Interaction.Triggers进行Usercontrol,并在其中放入ContentPresenter,将实际内容绑定到该位置。
<UserControl x:class="OneOfMyOtherControls">
<MyBaseUserControl>
<!-- your UserControl Content-->
</MyBaseUserControl>
</UserControl>