我需要在我的应用程序中的两个不同位置显示一个类似的对话框,一个位置作为模式对话框,另一个位置嵌入到另一个菜单中。
根据我对WPF的有限理解,看起来Styles允许我编写单个UserControl并为两种场景自定义其颜色和字体。然而,更改有点广泛,一些元素位置(例如,TextBox)处于不同的相对位置。
我不确定是否可以使用样式完成,或者是否有更合适的方法在WPF中执行此操作。最糟糕的情况是,我可以编写两个完全不同的UserControl,但这在可维护性方面非常糟糕,所以我想避免它。
答案 0 :(得分:0)
当然,您可以使用样式/模板进行操作。只需为每个样式添加一个键,然后使用键在正确的位置访问正确的样式:
<YourUserControl Style="{StaticResource firstStyle}"/>
答案 1 :(得分:0)
如果你使用像MVVM这样的模式(我更喜欢MVVM Light),这很简单。您可以编写一个ViewModel来捕获您想要公开的所有数据和行为,然后按照您希望的方式创建两个视图,两者都使用相同的视图模型。
此场景是MVVM模式背后的核心意图之一。你写行为/管道两次是“坏”是对的,但是视图是不同的,所以你不会违反那里的任何重用。