2016-09-20 8 views
0

Ich schreibe einfache WPF Calculator App und für jetzt habe ich einige der grundlegenden Funktionen wie Addition, Subtraktion usw. implementiert. Ich habe festgestellt, dass mein Code sieht schrecklich aus und eine Klasse ist für alles verantwortlich. Ich hatte Mühe, etwas Code, der innerhalb jeder Button-Click-Event-Methode liegt, zu den anderen Klassen und Methoden zu extrahieren, aber ohne Ergebnis. Ich bin mir der SOLID-Prinzipien bewusst, aber als Anfänger habe ich einige Schwierigkeiten, sie auszuführen, besonders das Single-Responsibility-Prinzip. CalculationWindow ist der TextBox-Name. Ich wäre dankbar, wenn Sie mir sagen könnten, wie man CalculationWindow.Text = CalculationWindow.Text + "8" in die andere Klasse extrahiert.Wie wird CalculationWindow in einer anderen Klasse als MainWindow verwendet?

Einige dieser Methoden

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> 

Antwort

0

Sie als Abhängigkeit der anderen Klasse im Konstruktor des Mainwindow injizieren() wie:

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

Dann können Sie es überall in MainWindow.xaml.cs

referenzieren
Verwandte Themen