我的任务是重构一个页面的混乱,我想尽可能以最好的方式重构它。布局页面是600多行,代码文件接近1400.我想将页面的不同模块分成用户控件,但不出所料,这些模块从他们所在的页面接收信息。对于简短的样本:
private void btnGetItem_Click(object sender, System.EventArgs e)
{
product = Products.getAllItemInformation(txtItemNbr.Text);
txtDescription.Text = product.getDesc();
setListBoxSelected(listMarketingSegment, product.getMarketingSegment());
}
private void setListBoxSelected(ListBox box, string pipeDelimitedStr)
{
pipeDelimitedStr = pipeDelimitedStr.Replace((char)253, '|');
pipeDelimitedStr = pipeDelimitedStr.Trim('|');
pipeDelimitedStr = "|" + pipeDelimitedStr + "|";
foreach (ListItem item in box.Items)
{
if (pipeDelimitedStr.IndexOf("|" + item.Value + "|") >= 0 && item.Value.Trim().Length > 0)
{
item.Selected = true;
}
}
}
如何才能使用此功能?用户控件需要能够从父页面访问相同的产品,但我不确定最佳实践是什么。
我看了http://www.codeproject.com/Articles/8797/Mastering-Page-UserControl-Communication,但我不确定如何将其与我的情况联系起来。我是否创建了一个界面?创建事件驱动的通信?如果是这样,我如何将产品信息传递给该用户控件?
答案 0 :(得分:0)
你可以用MVVM方式做到这一点。创建一个ViewModel,继承自INotifyPropertyChanged,为您的数据定义属性。将父页面的datacontext和usercontrol设置为ViewModel,并继续更新属性。现在,在usercontrol和父页面上,您可以使用这些属性访问数据。这是一个 example。你会在网上找到更多链接/示例来实现MVVM的方式。