2016-11-22 7 views
0

Я следующий XAML:Один обработчик щелчка для нескольких кнопок в StackPanel

<GroupBox x:Name="GroupBoxInworp" IsEnabled="True" Header="Inworp" HorizontalAlignment="Stretch" Margin="10,120,10,0" VerticalAlignment="Top" VerticalContentAlignment="Stretch"> 
     <StackPanel x:Name="StackPanelInworp" Button.Click="button_Click"> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0"> 
       <Button x:Name="btnTweeEuro" Margin="10" MinWidth="220" Content="2" Click="btnTweeEuro_Click"></Button> 
       <Button x:Name="btnEenEuro" Margin="10" MinWidth="220" Content="1" Click="btnEenEuro_Click"></Button> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0"> 
       <Button x:Name="btnVijftigEurocent" Margin="10" MinWidth="100" Content="50" Click="btnVijftigEurocent_Click"></Button> 
       <Button x:Name="btnTwintigEurocent" Margin="10" MinWidth="100" Content="20" Click="btnTwintigEurocent_Click"></Button> 
       <Button x:Name="btnTienEurocent" Margin="10" MinWidth="100" Content="10" Click="btnTienEurocent_Click"></Button> 
       <Button x:Name="btnVijfEurocent" Margin="10" MinWidth="100" Content="5" Click="btnVijfEurocent_Click"></Button> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="5"> 
       <Label Content="Huidige inworp:" MinWidth="160"></Label> 
       <Label x:Name="lblHuidigeInworp" Content="" MinWidth="300" HorizontalContentAlignment="Right"></Label> 
      </StackPanel> 
     </StackPanel> 
    </GroupBox> 

Я следующий код:

private void GeldClick(decimal Inworp) 
    { 
     TotaalInworp += Inworp; 
     lblHuidigeInworp.Content = String.Format("€ {0}", TotaalInworp); 
    } 

    private void btnTweeEuro_Click(object sender, RoutedEventArgs e) 
    { 
     GeldClick(2.00M); 
    } 

    private void btnEenEuro_Click(object sender, RoutedEventArgs e) 
    { 
     GeldClick(1.00M); 
    } 

    private void btnVijftigEurocent_Click(object sender, RoutedEventArgs e) 
    { 
     GeldClick(0.50M); 
    } 

    private void btnTwintigEurocent_Click(object sender, RoutedEventArgs e) 
    { 
     GeldClick(0.20M); 
    } 

    private void btnTienEurocent_Click(object sender, RoutedEventArgs e) 
    { 
     GeldClick(0.10M); 
    } 

    private void btnVijfEurocent_Click(object sender, RoutedEventArgs e) 
    { 
     GeldClick(0.05M); 
    } 

Я хочу, чтобы создать один обработчик для всех событий щелчка с а, для или переключатель.

Обработчик будет как

StackPanelInworp.AddHandler(Button.ClickEvent, new RoutedEventHandler(button_Click)); 

Я также хочу, чтобы создать класс, в котором я могу поместить обработчик событий с для или коммутатора. Есть 6 кнопок.

Как это можно сделать? Кроме того, это относится к десятичным знакам, поэтому переход был бы невозможным, я думаю?

ответ

0

Я пришел с этим: Xaml

<StackPanel x:Name="StackPanelInworp"> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0"> 
       <Button x:Name="btnTweeEuro" Margin="10" MinWidth="220" Content="2" Click="btnGeld_Click"></Button> 
       <Button x:Name="btnEenEuro" Margin="10" MinWidth="220" Content="1" Click="btnGeld_Click"></Button> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0"> 
       <Button x:Name="btnVijftigEurocent" Margin="10" MinWidth="100" Content="50" Click="btnGeld_Click"></Button> 
       <Button x:Name="btnTwintigEurocent" Margin="10" MinWidth="100" Content="20" Click="btnGeld_Click"></Button> 
       <Button x:Name="btnTienEurocent" Margin="10" MinWidth="100" Content="10" Click="btnGeld_Click"></Button> 
       <Button x:Name="btnVijfEurocent" Margin="10" MinWidth="100" Content="5" Click="btnGeld_Click"></Button> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="5"> 
       <Label Content="Huidige inworp:" MinWidth="160"></Label> 
       <Label x:Name="lblHuidigeInworp" Content="" MinWidth="300" HorizontalContentAlignment="Right"></Label> 
      </StackPanel> 
     </StackPanel> 

Код:

//Methode voor uitvoeren van alle click events mbt Geld 
    private void GeldClick(decimal Inworp) 
    { 
     TotaalInworp += Inworp; 
     lblHuidigeInworp.Content = String.Format("€ {0}", TotaalInworp); 
    } 

    //Enkel click event voor alle knoppen mbt Drank 
    private void btnGeld_Click(object sender, EventArgs e) 
    { 
     Button btn = sender as Button; 
     switch (btn.Content.ToString()) 
     { 
      case "2": 
       GeldClick(2.00M); 
       break; 
      case "1": 
       GeldClick(1.00M); 
       break; 
      case "50": 
       GeldClick(0.50M); 
       break; 
      case "20": 
       GeldClick(0.20M); 
       break; 
      case "10": 
       GeldClick(0.10M); 
       break; 
      case "5": 
       GeldClick(0.05M); 
       break; 
     } 
    } 

Кто знает улучшения? Требуется работать со списком папок для кнопок, но не знаю, как ...

Смежные вопросы