所以我的Windws商店应用程序中有两个用户控件,外观和工作几乎相同:
Control 1 http://image-upload.de/image/FbKYsa/319b71644f.png Control 2 http://image-upload.de/image/Hd9eMW/b78fca7c85.png
控件上的事件和事件处理是相同的,唯一的区别是第二个控件有一个额外的ComboBox,如您所见。 每当我更改某些功能时,如何防止代码重复和加倍工作?
我尝试将相同的控件打包到资源字典中,但无法弄清楚如何访问字典的代码隐藏中的控件元素。 据我所知,我也无法派生第二个控件,因为第一个使用XAML。
我的最后一个想法是只使用一个类,并给构造函数一个标志,以便在需要时添加一个ComboBox。但它似乎并不是正确的方式。有什么建议?
答案 0 :(得分:1)
我刚刚在应用上做了类似的事情。我的功能需要两个文本框用于输入密码,而OK,Cancel按钮在两个控件中都可用,但是其中一个控件也需要显示编码类型的单选按钮(这些按钮位于StackPanel中)。我在构造函数中添加了一个参数,如下所示:
public PasswordInputBox(bool isForImage)
{
this.InitializeComponent();
if (isForImage)
//initialize actions for that part of the EmbedTypePanel;
else
EmbedTypePanel.Visibility = Visibility.Collapsed;
}
然后,如果您需要使用额外组合框的控件,您可以初始化它,否则您只需将其折叠,以便用户不是更聪明。