Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

WPF Auswahl-Fenster mit Argument öffnen und Auswahl übernehmen.

29.12.2018 (👁10719)

WPF : Auswahl-Fenter öffnen und wert übernehme mit Button Elements

 

 

Dieses Beispiel zeigt, wir ein WPF Element eine Auswahl als Fenster öffnet und hieraus einen Auswahl getroffen wird.

Dabei fügt die Auswahl anschliessend ein Button in das Innere des ersten Aufrufers

 

 

 

Aufruf Popup

Das Window wird über ein new Window(..) erstellt und angezeigt.

Der Trick dabei ist, dass als Window(argument) der Aufrufer übergeben wird.

private void Panel_row_1_col_1_MouseUp(object sender, MouseButtonEventArgs e)

        {

            Border panel = sender as Border;

            Window_Select popup = new Window_Select(panel);

            popup.ShowDialog();

        }

 

 

Aufruf

 

Trick im Popup-Window

Der Trick dabei ist, dass im Window welches aufgerufen wird, eine gleichnamige Aufruf-Methode() erstellt wird, welche als Parameter ein WPF Element enthält.

Dadurch kann man schon beim Erstellen einse Window einen Parameter mitgeben

        public Window_Select(Border srcPanel)

        {

            //< get caller_Element >

            _srcPanel = srcPanel;

            //</ get caller_Element >

 

            InitializeComponent();

        }

 

 

 

Auswahl übernehmen

Wenn die Auswahl ausgewählt wurde, dann wird direkt das im Speicher festgehaltene Aufruf-Element angesprochen.

Da das aufrufende Element wie hier ein Border-Element als Windows(Source Argument) übernommen wurde, kann es hier verwendet werden.

Hier wird in das Element mit .Child in das aufrufende Element ein Button gelegt.

 

Button btn = new Button();

btn.Background = new SolidColorBrush(Colors.Green);

_srcPanel.Child = btn;

 

Anschliessend wird das Fenster geschlossen

 

this.Close();

 

 

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.Shapes;

 

namespace Demo_InsertElement

{

    /// <summary>

    /// Interaction logic for Window_Select.xaml

    /// </summary>

    public partial class Window_Select : Window

    {

        private Border _srcPanel;

 

        #region  Form

        //=============< region: Form >=============

        public Window_Select(Border srcPanel)

        {

            //< get caller_Element >

            _srcPanel = srcPanel;

            //</ get caller_Element >

 

            InitializeComponent();

        }

        //=============</ region: Form >=============

        #endregion

 

        #region  Buttons

        //=============< region: Buttons >=============

        private void BtnRed_Click(object sender, RoutedEventArgs e)

        {

            //------------< BtnRed_Click() >------------

            //< create element >

            Button btn = new Button();

            btn.Background = new SolidColorBrush(Colors.Red);

            //</ create element >

            

            //< element into caller >

            //*adds a new element into the caller 

            _srcPanel.Child = btn;

            //</ element into caller >

 

            //< close >

            this.Close();

            //</ close >

            //------------</ BtnRed_Click() >------------

        }

 

        private void BtnGreen_Click(object sender, RoutedEventArgs e)

        {

            Button btn = new Button();

            btn.Background = new SolidColorBrush(Colors.Green);

            _srcPanel.Child = btn;

            this.Close();

        }

        //=============</ region: Buttons >=============

        #endregion

    }

}

 

 

 

XAML

 

Basis-Fenster

Das Basis-Fenster, welches ein Popup Fenster als Auswahl öffnet.

In diesem Fall soll das rote Rechteck vom Typ Border ein Fenster öffnen.

Wenn das Auswahl-Fenster geöffnet wurde, dann soll ein Button als Element in das Border-Element hineingelegt werden. Das gleiche kann natürlich auch für ander WPF Elemente erstellt werden.

Wichtig ist: dass ein Aufrufer-Element ein Auswahl-Fenster öffnet

 

<Window x:Class="Demo_InsertElement.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:Demo_InsertElement"

        mc:Ignorable="d"

        Title="MainWindow" Height="450" Width="800">

    <Grid>

        <Grid.ColumnDefinitions>

            <ColumnDefinition Width="186*"/>

            <ColumnDefinition Width="53*"/>

            <ColumnDefinition Width="555*"/>

        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>

            <RowDefinition Height="98*"/>

            <RowDefinition Height="52*"/>

            <RowDefinition Height="269*"/>

        </Grid.RowDefinitions>

        <Border x:Name="panel_row_1_col_1" BorderBrush="Red" BorderThickness="1" Margin="2" 

                Grid.Row="1" Grid.Column="1"  VerticalAlignment="Stretch" HorizontalAlignment="Stretch"  

                MouseUp="Panel_row_1_col_1_MouseUp" Background="#f0f0f0" 

                />

 

    </Grid>

</Window>

 

 

 

 

 

 

Das Popup-Window

Als Auswahlfenster für Daten

Im Aufruf-Window wird hier ein Button ausgewählt.
Wichtig ist, dass dadurch ein Event ausgelöst wird, welcher eine Auswahl darstellt und damit der Wert an den WPF Aufrufer zurück gegeben werden kann.

 

<Window x:Class="Demo_InsertElement.Window_Select"

        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:Demo_InsertElement"

        mc:Ignorable="d"

        Title="Window_Select" Height="450" Width="800">

    <Grid>

        <Label Content="Select a Button" HorizontalAlignment="Left" Height="46" Margin="44,26,0,0" VerticalAlignment="Top" Width="257"/>

        <Button x:Name="BtnRed" Content="Red" Height="51" Margin="64,69,0,0" Width="89" 

                HorizontalAlignment="Left" VerticalAlignment="Top" 

                Background="Red"  Click="BtnRed_Click"/>

        <Button x:Name="BtnGreen" Content="Green" Height="51" Margin="65,133,0,0" Width="89" 

                HorizontalAlignment="Left" VerticalAlignment="Top" 

                Background="Green" Click="BtnGreen_Click"/>

 

    </Grid>

</Window>