WM8.1: Unterschied zwischen den Versionen
Aus Alexander's Wiki
Admin (Diskussion | Beiträge) |
Admin (Diskussion | Beiträge) |
||
Zeile 86: | Zeile 86: | ||
In der Model-Klasse (*.cs) | In der Model-Klasse (*.cs) | ||
<source lang="csharp"> | <source lang="csharp"> | ||
public class MyClass : | public class MyClass : INotifyPropertyChanged | ||
{ | { | ||
public event PropertyChangedEventHandler PropertyChanged; | public event PropertyChangedEventHandler PropertyChanged; | ||
Zeile 108: | Zeile 108: | ||
} | } | ||
... | ... | ||
public void SetDemoData() | |||
{ | |||
this.MyMethode= "Ein Text"; | |||
} | |||
} | } | ||
</source> | </source> |
Version vom 21. April 2015, 08:55 Uhr
XAML
Die XAML-Datei beschreibt die Oberfläche(n) der Anwendung, z.B. MyView.xaml. Dazu gehört eine eine Klasse, die die Logik implementiert, z.B.: MyView.xaml.cs. Die Zuordnung erfolgt über die XAML-Datei:
<Page
...
x:Class="TechLog.MyView"
...
Um auf ein Steuerelement aus der Klasse zugreifen zu können, benötigt es einen Namen. Außerdem kann ein Event ausgelöst werden, falls es ausgewählt wird. Dies geschieht wie folgt:
<Element
...
x:Name="myName"
SelectionChanged="ListView_SelectionChanged"
...
</Element>
In der zugehörigen Klasse kann man darauf beispielsweise so reagieren:
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
List<String> itemsList = new List<string>();
itemsList.Add("Item 4");
itemsList.Add("Item 5");
myName.ItemsSource = itemsList;
}
Buttons
Dem Button muss ein Handler zugeordnet werden damit beim Klick etwas geschieht:
<Button ...
Click="CalculateHandler">
</Button>
In der Klasse wird dann die folgende Methode aufgerufen:
private void CalculateHandler(object sender, RoutedEventArgs e)
{
...
}
Button drehen
<Button ...
RenderTransformOrigin="0.5,0.5"
Style="{StaticResource NavigationBackButtonNormalStyle}">
<UIElement.RenderTransform>
<RotateTransform CenterX="0.5" CenterY="0.5" Angle="180" />
</UIElement.RenderTransform>
</Button>
Bild anstelle des Icons
<Button Style="{StaticResource NavigationBackButtonNormalStyle}">
<Button.Template>
<ControlTemplate>
<Image Source="Assets/download-2-45.png" />
</ControlTemplate>
</Button.Template>
</Button>
Model
App.xaml.cs
protected async override void OnLaunched(LaunchActivatedEventArgs e)
{
//
// Instantiate DAOs
//
ITechLogDao tlDao = new TechLogDummyDao();
App.Current.Resources["techLogDao"] = tlDao;
...
}
Binding
In der Model-Klasse (*.cs)
public class MyClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
...
private Int32 _MyVariable;
public Int32 MyMethode
{
get { return _MyVariable; }
set { _MyVariable = value; NotifyPropertyChanged("MyMethode"); }
}
...
public void SetDemoData()
{
this.MyMethode= "Ein Text";
}
}
In der Controller Klasse (*.xaml.cs)
private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
MenuItemDataSource menuItemDataSource = (MenuItemDataSource)App.Current.Resources["menuItemDataSource"];
menuItemDataSource.Refresh();
if (menuItemDataSource != null)
{
this.DefaultViewModel["Items"] = menuItemDataSource.MenuItems;
}
}
In der View (*.xaml)
<Page.Resources>
<!-- Collection of items displayed by this page -->
<CollectionViewSource x:Name="itemsViewSource" Source="{Binding Items}"/>
...
</Page.Resources>