首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何移动到MVVM

如何移动到MVVM
EN

Stack Overflow用户
提问于 2013-08-30 15:20:30
回答 2查看 370关注 0票数 0

我用数据基使用Devexpress和Ado.net连接模式制作了WPF应用程序。我在其他语言中工作,现在转到C#,我是WPF .I的新手,我编写了这段代码来编辑单个和分组的行:

代码语言:javascript
复制
void EditRow(int focRowHand, nrcsaEntities a)
        {

        Name nametext = grid.GetRow(focRowHand) as Name;      
        try
            {
            if (nametext.Name1 != string.Empty)
                {

                update_id = nametext.PK_ID;
                txtName2.Text = update_text = nametext.Name1;

                if (Panel3.Visibility == System.Windows.Visibility.Visible)
                    {
                    Panel1.Visibility = System.Windows.Visibility.Visible;
                    Panel3.Visibility = System.Windows.Visibility.Collapsed;
                    }

                else
                    {
                    Panel1.Visibility = System.Windows.Visibility.Collapsed;
                    Panel3.Visibility = System.Windows.Visibility.Visible;
                    }
                }
            }
        catch (Exception err)
            {
            DXMessageBox.Show(err.StackTrace);

            }

        }

    private void ToggleButton1_Copy_Click(object sender, RoutedEventArgs e)
        {

        if (view.FocusedRowHandle == -1)
            {
            DXMessageBox.Show("Please Select any Item From Grid List");
            }
        else
            {
            try
                {
                int FocRowHand = view.FocusedRowHandle;
                nrcsaEntities a = new nrcsaEntities();

                if (grid.IsGroupRowHandle(FocRowHand))
                    {
                    int childCount = grid.GetChildRowCount(FocRowHand);
                    for (int i = 0; i < childCount; i++)
                        {
                        int childHandle = grid.GetChildRowHandle(FocRowHand, i);
                        EditRow(childHandle, a);
                        }
                    }
                else
                    {
                    EditRow(FocRowHand, a);

                    }

                }
            catch (Exception ee)
                {
                DXMessageBox.Show(ee.StackTrace);
                }
            }

我的客户要求生成高质量的代码。有可能超过1000个用户将使用此应用程序,并且可以将用户数据保存到5000多个,我的问题是:因为我向我的客户提交应用程序的时间较少。如果我想将这段代码转换成MVVM,那么如何做到这一点对于我来说并不复杂。其次,您对这个代码质量有什么看法?我对此非常困惑。我期待着你的答复。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-30 16:04:26

我建议您多花几天时间从您的客户,并采取Devexpress MVVM脚手架向导,它是准备使用。您只需与数据库建立连接,只需更改应用程序的接口即可。

票数 1
EN

Stack Overflow用户

发布于 2013-08-30 15:52:07

我所能告诉您的是,如果您将此应用程序转换为WPF和MVVM,那么您将需要重写大量代码。一个问题是WPF和其他语言很不一样.由于这些差异,大多数开发人员在第一次学习WPF时面临着艰难的挑战。

然后,如果你想使用MVVM设计模式,事情就会变得更加不同.例如,通常不赞成用文件后面的代码编写代码。当然,使用文件背后的代码是可能的,但是我们倾向于实现Attached Properties来“包装”这些UI控制事件处理程序的功能,例如SelectionChanged

通常,您向我们展示的代码必须移动到视图模型中,但随后您将失去引用控件的能力,因此您必须找到其他方法来重新实现相同的行为,但要以MVVM的方式实现。您还需要实现大量的ICommand实例来替换大量的Click处理程序,等等。

现在,我必须承认,到目前为止,我的评论可能会让您认为,我并不是建议您转换您的项目。但是,我不建议您转换您的项目。WPF和使用MVVM模式有很大的好处。图形,动画,样式和能力,使任何控制看起来像任何其他事情。

我想提出的最后一点是关于“大数据”的问题。WPF是一个需要处理器的框架..。这是无法避免的。当将数以万计的数据项呈现为漂亮的UI元素时,它可能会很慢。然而,在进行了几年的大规模应用之后,我发现有一些方法可以改善这种情况。

我们可以让WPF使用安装的显卡的功能,或者使用虚拟面板,这些面板只为可见项加载数据,等等。在开始转换之前,您确实需要了解WPF的这个负面方面,因为一旦它被转换了,就太晚了。我还建议以某种方式使运行应用程序的计算机变得足够强大。

我希望这个“总结”对你来说不是太消极,并在某种程度上有所帮助。最后,我想说,我个人是WPF和MVVM的超级粉丝。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18536394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档