2016-09-20 44 views
0

我正在寫簡單的WPF計算器應用程序,現在我已經實現了一些基本功能,如添加,減法等。我已經意識到我的代碼看起來很糟糕,一個類可以承擔一切。我努力將每個按鈕點擊事件方法中的一些代碼提取到其他類和方法,但沒有任何結果。我知道固體原理,但作爲初學者,我在執行它們時遇到了一些困難,特別是單一可重複性原則。 CalculationWindow是TextBox的名稱。我會很感激,如果你能告訴我如何將CalculationWindow.Text = CalculationWindow.Text + "8"提取給其他班級。如何在其他類中使用CalculationWindow而不是MainWindow?

一些方法,

namespace CalculatorApplication 
{ 
    public partial class MainWindow : Window 
    { 
     private double inputFirstDigit; 
     public string actionOperator;` 

     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void NumberOneButton_Click(object sender, RoutedEventArgs e) 
     { 
      CalculationWindow.Text = CalculationWindow.Text + "1"; 
     } 

     private void NumberTwoButton_Click(object sender, RoutedEventArgs e) 
     { 
      CalculationWindow.Text = CalculationWindow.Text + "2"; 
     } 

     private void NumberThreeButton_Click(object sender, RoutedEventArgs e) 
     { 
      CalculationWindow.Text = CalculationWindow.Text + "3"; 
     } 

     private void NumberFourButton_Click(object sender, RoutedEventArgs e) 
     { 
      CalculationWindow.Text = CalculationWindow.Text + "4"; 
     } 

     private void NumberFiveButton_Click(object sender, RoutedEventArgs e) 
     { 
      CalculationWindow.Text = CalculationWindow.Text + "5"; 
     } 

     private void NumberSixButton_Click(object sender, RoutedEventArgs e) 
     { 
      CalculationWindow.Text = CalculationWindow.Text + "6"; 
     } 

     private void NumberSevenButton_Click(object sender, RoutedEventArgs e) 
     { 
      CalculationWindow.Text = CalculationWindow.Text + "7"; 
     } 

XML

<Window x:Class="CalculatorApplication.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:CalculatorApplication" 
    mc:Ignorable="d" 
    Title="Calculator" Height="480" Width="350" ResizeMode="NoResize"> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="25"/> 
     <RowDefinition Height="85"/> 
     <RowDefinition Height="65"/> 
     <RowDefinition Height="65"/> 
     <RowDefinition Height="65"/> 
     <RowDefinition Height="65"/> 
     <RowDefinition Height="80"/> 
    </Grid.RowDefinitions> 
    <Menu Grid.Row="0"> 
     <MenuItem Header="File"> 
      <MenuItem Header="Save to file"/> 
     </MenuItem> 
      <MenuItem Header="Median"/> 
     <MenuItem Header="Fibonacci Sequence"/> 
    </Menu> 
    <TextBox x:Name="CalculationWindow" TextAlignment="Right" FontSize="29.333" Grid.ColumnSpan="2" HorizontalAlignment="Right" Height="70" Margin="15,15,15,0" Grid.Row="1" VerticalAlignment="Center" Width="310" FontWeight="Bold"/> 
    <Button x:Name="BackspaceButton" Content="⌫" FontSize="20" HorizontalAlignment="Left" Margin="15,15,0,0" Grid.Row="2" VerticalAlignment="Top" Width="50" Height="50" Click="BackspaceButton_Click"/> 
     <Button x:Name="NumberSevenButton" Content="7" HorizontalAlignment="Left" Margin="15,15,0,0" Grid.Row="3" VerticalAlignment="Top" Width="50" Height="50" Click="NumberSevenButton_Click"/> 
    <Button x:Name="NumberFourButton" Content="4" HorizontalAlignment="Left" Margin="15,15,0,0" Grid.Row="4" VerticalAlignment="Top" Width="50" Height="50" Click="NumberFourButton_Click"/> 
    <Button x:Name="NumberOneButton" Content="1" HorizontalAlignment="Left" Margin="15,15,0,0" Grid.Row="5" VerticalAlignment="Top" Width="50" Height="50" Click="NumberOneButton_Click"/> 
    <Button x:Name="NumberZeroButton" Content="0" HorizontalAlignment="Left" Margin="15,15,0,0" Grid.Row="6" VerticalAlignment="Top" Width="115" Height="50" Click="NumberZeroButton_Click"/> 
    <Button x:Name="CButton" Content="C" HorizontalAlignment="Left" Margin="80,15,0,0" Grid.Row="2" VerticalAlignment="Top" Width="115" Height="50" Click="CButton_Click"/> 
    <Button x:Name="NumberEightButton" Content="8" HorizontalAlignment="Left" Margin="80,15,0,0" Grid.Row="3" VerticalAlignment="Top" Width="50" Height="50" Click="NumberEightButton_Click"/> 
    <Button x:Name="NumberFiveButton" Content="5" HorizontalAlignment="Left" Margin="80,15,0,0" Grid.Row="4" VerticalAlignment="Top" Width="50" Height="50" Click="NumberFiveButton_Click"/> 
    <Button x:Name="NumberTwoButton" Content="2" HorizontalAlignment="Left" Margin="80,15,0,0" Grid.Row="5" VerticalAlignment="Top" Width="50" Height="50" Click="NumberTwoButton_Click"/> 
    <Button x:Name="NumberNineButton" Content="9" HorizontalAlignment="Left" Margin="145,15,0,0" Grid.Row="3" VerticalAlignment="Top" Width="50" Height="50" Click="NumberNineButton_Click"/> 
    <Button x:Name="NumberSixButton" Content="6" HorizontalAlignment="Left" Margin="145,15,0,0" Grid.Row="4" VerticalAlignment="Top" Width="50" Height="50" Click="NumberSixButton_Click"/> 
    <Button x:Name="NumberThreeButton" Content="3" HorizontalAlignment="Left" Margin="145,15,0,0" Grid.Row="5" VerticalAlignment="Top" Width="50" Height="50" Click="NumberThreeButton_Click"/> 
    <Button x:Name="CommaButton" Content="," HorizontalAlignment="Left" Margin="145,15,0,0" Grid.Row="6" VerticalAlignment="Top" Width="50" Height="50" Click="CommaButton_Click"/> 
    <Button x:Name="PlusMinusButton" Content="±" HorizontalAlignment="Left" Margin="210,15,0,0" Grid.Row="2" VerticalAlignment="Top" Width="50" Height="50" Click="PlusMinusButton_Click"/> 
    <Button x:Name="DivisionButton" Content="/" HorizontalAlignment="Left" Margin="210,15,0,0" Grid.Row="3" VerticalAlignment="Top" Width="50" Height="50" Click="DivisionButton_Click"/> 
    <Button x:Name="MultiplicationButton" Content="*" HorizontalAlignment="Left" Margin="210,15,0,0" Grid.Row="4" VerticalAlignment="Top" Width="50" Height="50" Click="MultiplicationButton_Click"/> 
    <Button x:Name="SubstractionButton" Content="-" HorizontalAlignment="Left" Margin="210,15,0,0" Grid.Row="5" VerticalAlignment="Top" Width="50" Height="50" Click="SubstractionButton_Click"/> 
    <Button x:Name="AdditionButton" Content="+" HorizontalAlignment="Left" Margin="210,15,0,0" Grid.Row="6" VerticalAlignment="Top" Width="50" Height="50" Click="AdditionButton_Click"/> 
    <Button x:Name="SqrtButton" Content="√" HorizontalAlignment="Left" Margin="275,15,0,0" Grid.Row="2" VerticalAlignment="Top" Width="50" Height="50" Click="SqrtButton_Click"/> 
    <Button x:Name="PercetangeButton" Content="%" HorizontalAlignment="Left" Margin="275,15,0,0" Grid.Row="3" VerticalAlignment="Top" Width="50" Height="50" Click="PercetangeButton_Click"/> 
    <Button x:Name="ReciprocalButton" Content="1/x" HorizontalAlignment="Left" Margin="275,15,0,0" Grid.Row="4" VerticalAlignment="Top" Width="50" Height="50" Click="ReciprocalButton_Click"/> 
    <Button x:Name="ResultButton" Grid.RowSpan="2" Content="=" HorizontalAlignment="Left" Margin="275,15,0,0" Grid.Row="5" VerticalAlignment="Top" Width="50" Height="115" Click="ResultButton_Click"/> 
</Grid> 

回答

0

可以作爲依賴於主窗口的構造函數(其他類注射),如:

private OtherClass otherClass; 
public MainWindow(OtherClass otherClass) 
    { 
     InitializeComponent(); 
     this.otherClass = otherClass; 
    } 

然後你可以在MainWindow.xaml.cs中的任何地方引用它

相關問題