Pääsivulle | TIETOTEKNIIKAN PÄÄSIVULLE
Alasvetovalikko (WPF)
Seuraavassa on alasvetovalikon käyttämisestä toimiva esimerkki.
Ensin on ikkunan kuvaus xaml-tiedostona ja sen jälkeen C#-koodi,
joka tulee omaksi tiedostokseen. Siinä on kuvattu ikkunan
toiminnallisuudet.
<!---
2.2.2018 MainWindow.xaml-->
<Window x:Class="Comboboxtesti.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:Comboboxtesti"
mc:Ignorable="d"
Title="Comboboxtesti"
Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ComboBox
Grid.Row="0" x:Name="comboTesti" Width="200"
VerticalAlignment="Center" HorizontalAlignment="Center"
SelectionChanged="ComboTesti_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding
Nimiz}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Button
Grid.Row="1" FontWeight="Bold" Content=" Mikä on valinta? "
Height="24" Width="180"
PreviewMouseLeftButtonUp="ButtonInfo_Click"/>
</Grid>
</Window>
*************************************************************************
// 2.2.2018 MainWindow.xaml.cs (Comboboksitesti)
//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;
// Esimerkki comboboxin käytöstä: tiedot paikoilleen,
// valitun vaihtoehdon katsominen, action jos valitaan toinen
// Windows Presentation Format (WPF), dotnet Framework 4.5.2
// Softa koodattu: Windows 8.1, Visual Studio Community 2017
namespace Comboboxtesti
{
// -------------------------------------------
// 2.2.2018
// Comboboxien sisällön yhden kentän
määrittelevä luokka
public class Combocoll
{
public int Nro { get; set; }
= -1; // esimerkiksi idHlo
public string Nimiz { get;
set; } = ""; // esimerkiksi nimiz
}
// -------------------------------------------
// 2.2.2018
// Varsinainen ikkunan luokka
public partial class MainWindow : Window
{
bool
alku; // näytön rakentamisen tila
public MainWindow()
{
alku =
true; // kohta piirretään combobox, ei haluta
actionia
InitializeComponent();
//
kerätään comboboxin sisältö tähän listaan:
List<Combocoll> dct = new List<Combocoll>();
for (int
i=1;i<10;i++)
{
dct.Add(new Combocoll { Nro = i, Nimiz =
$"Valinta_{i}" });
}
//
tietolähteen määrittely comboboxille
comboTesti.ItemsSource = dct;
alku =
false; // näyttö on valmis
}
//-----------------------------------------------------------------------
//
2.2.2018 K17
// Käyttäjä poistui
valikosta Ulkopaikka. Tarkistetaan onko kyseessä tietty tuttu
paikka
// (esim Nummi Kotipiha) ja
jos on, niin laitetaan koordinaatit paikoilleen
private void
ComboTesti_SelectionChanged(object sender,
SelectionChangedEventArgs e)
{
if (alku)
return; // ohitus kun näyttöä rakennetaan
// mikä
oli valintamme
Combocoll
item = (sender as ComboBox).SelectedItem as Combocoll;
if (item
== null)
{
MessageBox.Show("Valinta epäonnistui", "(K17-01)
Ohjelmointivirhe");
return;
}
string
mesz = $"Valittiin '{item.Nimiz}', ";
mesz +=
$"sen id = {item.Nro}";
MessageBox.Show(mesz, "(K17-02) Ilmoitus");
}
//-----------------------------------------------------------------------
//
2.2.2018 K19
// Käyttäjä haluaa tietää
mikä on valinta
private void
ButtonInfo_Click(object sender, MouseButtonEventArgs e)
{
string
mesz = "";
//
katsotaan mikä on nyt valittuna
var item
= (Combocoll)comboTesti.SelectedItem;
if (item
== null)
mesz = "Ei ole mitään valittuna";
else
{
mesz = $"Valittuna on '{item.Nimiz}', ";
mesz += $"sen id = {item.Nro}";
}
MessageBox.Show(mesz, "(K19-02) Ilmoitus");
}
}
}
--------------------------------
(sivua muokattu 4.2.2018)