Event Handler in Windows Store-Apps hinzufügen

XAML-Element:

1
<Grid x:Name="advert">...</Grid>

Möglichkeit 1

1
<Grid x:Name="advert" Tapped="AdvertTapped">...</Grid>
1
2
3
4
private void AdvertTapped(object sender, TappedRoutedEventArgs e)
{
 // do something
}

Möglichkeit 2

1
2
3
4
5
6
7
8
9
10
11
public GroupDetailPage()
{
  this.InitializeComponent();
 
  advert.AddHandler(Grid.TappedEvent, new TappedEventHandler(AdvertTapped), true);
}
 
private void AdvertTapped(object sender, TappedRoutedEventArgs e)
{
 // do something
}

Möglichkeit 3

1
2
3
4
5
6
7
8
9
10
11
public GroupDetailPage()
{
  this.InitializeComponent();
 
  advert.Tapped += new TappedEventHandler(AdvertTapped);
}
 
private void AdvertTapped(object sender, TappedRoutedEventArgs e)
{
  // do something
}

Möglichkeit 4

1
2
3
4
5
6
7
8
9
public GroupDetailPage()
{
  this.InitializeComponent();
 
  advert.Tapped += (sender, e) =>
  {
    // do something
  };
}

Abstand in Windows Store-App mit C# setzen

Für eigene Elemente kann der Abstand mit XAML ganz leicht gesetzt werden:

<Grid x:Name="FullScreenContent" Margin="11,22,33,44">
  ...
</Grid>

Mit C# geht das aber auch:

FullScreenContent.Margin = new Thickness(11,22,33,44);

Möchte man nur den linken Abstand ändern, so kann man dies wie folgt tun:

Thickness marginCopy = FullScreenContent.Margin;
marginCopy.Left = 11;
FullScreenContent.Margin = marginCopy;

Die Abstände werden übrigens in dieser Reigenfolge angegeben: Margin="links,oben,rechts,unten".
Das entspricht dem Uhrzeigersinn, beginnend von links.

Snapped View und weitere Application View States mit C# behandeln

Im Beitrag „[post id=4959]Snap View mit XAML in Windows Store App definieren[/post]“ habe ich gezeigt, wie man mit dem VisualStateManager auf verschiedene Visual Statues in XAML reagieren kann. Das gleiche Verhalten kann man natürlich auch mit reinem C#-Code erzeugen. Hier ein einfaches Beispiel, welches ein XAML-Element im Snapped-View ausblendet und andernfalls wieder anzeigt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public MainPage()
{
  this.InitializeComponent();
  Window.Current.SizeChanged += onSizeChanged;
}
 
private void onSizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
{
  ApplicationViewState viewState = Windows.UI.ViewManagement.ApplicationView.Value;
  if (viewState == ApplicationViewState.Snapped)
  {
    MyElement.Visibility = Visibility.Collapsed;
  }
  else
  {
    MyElement.Visibility = Visibility.Visible;
  }
}

Für Windows Store-Apps gibt es folgende View States: FullScreenLandscape, FullScreenPortrait, Filled und Snapped.

Objekte sortieren mit LINQ

In „[post id=“4996″]Strings alphabetisch sortieren mit LINQ[/post]“ habe ich gezeigt, wie man ganz leicht Zeichenketten sortieren kann. In diesem Beispiel möchte ich zeigen, wie man Objekte komplexerer Datentypen sortieren kann. Mit LINQ geht das auch wieder sehr leicht von der Hand.
Objekte sortieren mit LINQ weiterlesen

Strings alphabetisch sortieren mit LINQ

Das Sortieren von Zeichenkette wird mit LINQ zum Kinderspiel. Der folgende Code nimmt die vollständige alphabetische Sortierung eines Arrays vor:

1
2
3
// http://en.wikipedia.org/wiki/List_of_animal_names
string[] animalNames = { "Zebra", "Cat", "Elephant", "Bird", "Worm", "Giraffe", "Fish", "Monkey", "Badger" };
var sortedAnimalNames = from name in animalNames orderby name select name;

Mit LINQ (engl. Abkürzung für Language Integrated Query) können aber weitaus komplexere Abfragen gemacht werden. Die Syntax ist dabei an SQL angelehnt. Ein paar interessante Beispiele hat Microsoft bereits in „101 LINQ Samples“ zusammengestellt.

Data Binding mit ListView und ItemTemplate

Daten können in Windows Store apps ganz einfach mit C# an ein XAML-Layout gebunden werden. Alles was man dazu braucht sind Daten (z.B. ein Array mit Strings) und ein geeingetes Layout-Element (z.B. eine ListView) mit einem ItemTemplate. Den Code dazu gibt es im Anhang dieses Beitrags. Wer eigene Datentypen an das Layout binden möchte, der kann sich das etwas komplizierte Beispiel „[post id=“4861″]XAML Data Binding mit C# für Windows 8-Apps[/post]“ anschauen.
Data Binding mit ListView und ItemTemplate weiterlesen