WPF中计算器的MVVM代码(C#) [英] MVVM code for a calculator in WPF (C#)

查看:89
本文介绍了WPF中计算器的MVVM代码(C#)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在wpf中编写了一个简单计算器的代码。



我的MainWindow.Xaml代码是..



I've written a code for a simple calculator in wpf .

My MainWindow.Xaml code is..

<code><Window x:Class="CalculatorNew.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="MainWindow" Height="350" Width="525">
    <Grid ContextMenuClosing="Multi">
        <TextBox x:Name="TextBox1" HorizontalAlignment="Left" Height="23" Margin="216,23,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" RenderTransformOrigin="0.679,0.552"/>
        <TextBox x:Name="TextBox2" HorizontalAlignment="Left" Height="23" Margin="216,76,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" RenderTransformOrigin="0.679,0.552"/>
        <TextBox x:Name="TextBox3" HorizontalAlignment="Left" Height="23" Margin="216,121,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" RenderTransformOrigin="0.679,0.552"/>
        <TextBlock HorizontalAlignment="Left" Margin="68,30,0,0" TextWrapping="Wrap" Text="First Number" VerticalAlignment="Top" RenderTransformOrigin="1.137,1.259" Height="16" Width="80"/>
        <TextBlock HorizontalAlignment="Left" Margin="68,128,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="1.137,1.259" Height="16" Width="80" Text="Result"/>
        <TextBlock HorizontalAlignment="Left" Margin="68,83,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="1.137,1.259" Height="16" Width="99" Text="Second Number"/>
        <Button Content="+" HorizontalAlignment="Left" Margin="73,172,0,0" VerticalAlignment="Top" Width="75" Click="Add"/>
        <Button Content="-" HorizontalAlignment="Left" Margin="179,172,0,0" VerticalAlignment="Top" Width="75" Click="Sub"/>
        <Button Content="*" HorizontalAlignment="Left" Margin="286,172,0,0" VerticalAlignment="Top" Width="75" Click="Multi"/>
        <Button Content="/" HorizontalAlignment="Left" Margin="392,172,0,0" VerticalAlignment="Top" Width="75" Click="Div"/>

    </Grid>
</Window>
</code>



我的MainWindowdow.Xaml.cs代码是..




My MainWindowdow.Xaml.cs code is..

<code>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace CalculatorNew
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        

        

        private void Add(object sender, RoutedEventArgs e)
        {
            TextBox3.Text = (System.Convert.ToDecimal(TextBox1.Text) + System.Convert.ToDecimal(TextBox2.Text)).ToString();
        }

        private void Sub(object sender, RoutedEventArgs e)
        {
            TextBox3.Text = (System.Convert.ToDecimal(TextBox1.Text) - System.Convert.ToDecimal(TextBox2.Text)).ToString();
        }

        

        private void Div(object sender, RoutedEventArgs e)
        {
            TextBox3.Text = (System.Convert.ToDecimal(TextBox1.Text) / System.Convert.ToDecimal(TextBox2.Text)).ToString();
        }

        private void Multi(object sender, RoutedEventArgs e)
        {
            TextBox3.Text = (System.Convert.ToDecimal(TextBox1.Text) * System.Convert.ToDecimal(TextBox2.Text)).ToString();
        }    
        
    }   
}</code>



有人能告诉我如何用MVVM格式重写它吗?


Can someone tell me how to rewrite it in MVVM format ?

推荐答案

第一个问题是,你明白MVVM是什么吗?假设您这样做:



您需要做的是设计您的View-Model,它将包含您的所有功能(即您的计算功能)。

它还应该有一个属性来存储结果。

另外,我希望将数学函数公开为命令。



然后在现有视图中,我将删除事件处理程序并在按钮的命令属性上使用绑定,并将textbox3绑定到视图模型的results属性。
The first question for this is, do you understand what MVVM is? Assuming that you do:

What you need to do is design your View-Model, this will contain all your functionality (i.e. your calculation functions).
It should also have a property on it to store the result.
Also, I would look to expose the mathematical functions as commands.

Then in your existing view, I would remove the event handlers and use bindings on the command properties for the buttons, and bind your "textbox3" to the results property of your view model.




我建议你阅读关于copeplex或PRISM的MVVM光的文章。然后开始用MVVM创建项目。

祝你好运
Hi,
I suggest you read article about MVVM light on copeplex or PRISM. And then start to create project with MVVM.
Best regards


这篇关于WPF中计算器的MVVM代码(C#)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆