Basis auf this excellent presentation von Laurent Bugnion bei Xamarin Evolve 2014, ich versuche, meine erste UWP/MVVM Light-Anwendung zu erstellen.Mvvm Licht, UWP und Code hinter
habe ich eine sehr einfache Artikel: ObservableObject Klasse mit 2 string Eigenschaften: Référence und Désignation.
Nach Ansicht Modell auf den Artikel Listenansicht zugeordnet ist, habe ich eine Aktion einen neuen Artikel zu erstellen:
public ArticlesViewModel(IArticleService dataService, INavigationService navigationService)
{
ArticleService = dataService;
NavigationService = navigationService;
CréeArticleCommand = new RelayCommand(CréeArticle);
}
public RelayCommand CréeArticleCommand { get; private set; }
private void CréeArticle()
{
if (!CréeArticleCommand.CanExecute(null))
return;
NavigationService.NavigateTo(ViewModelLocator.ArticleDetail_Key,
new ArticleViewModel(new Article(),
ArticleService,
NavigationService));
}
hier ist das XAML für meine Artikel Detailansicht:
<!-- language: xaml -->
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:UniversalTest1.UWP.Articles"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:Editors="using:DevExpress.UI.Xaml.Editors"
x:Class="UniversalTest1.UWP.Articles.Article_Detail"
mc:Ignorable="d"
xmlns:vm="clr-namespace:UniversalTest1.Data.ViewModels.Articles;assembly=UniversalTest1.Data"
d:DataContext="{d:DesignInstance Type=vm:ArticleViewModel, IsDesignTimeCreatable=True}">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBlock Text="Référence :" HorizontalAlignment="Left" Margin="24,15,0,0" VerticalAlignment="Top"/>
<TextBlock Text="Désignation :" HorizontalAlignment="Left" Margin="10,52,0,0" VerticalAlignment="Top"/>
<Editors:TextEdit Text="{Binding Article.Référence, Mode=TwoWay}" HorizontalAlignment="Left" Margin="100,8,0,0" VerticalAlignment="Top" Width="300"/>
<Editors:TextEdit Text="{Binding Article.Désignation, Mode=TwoWay}" HorizontalAlignment="Left" Margin="100,45,0,0" VerticalAlignment="Top" Width="500"/>
<Button Content="Sauver" Command="{Binding SauverCommand}" HorizontalAlignment="Left" Margin="102,84,0,0" VerticalAlignment="Top"/>
</Grid>
</Page>
Meine Problem hier ist, dass ich den DataContext in den Code hinter meiner Seite definieren muss:
Gibt es eine Möglichkeit, die Entwurfszeit DataContext wie im d: DataContext-Teil der Xaml-Seite definiert zu halten und zur Laufzeit den DataContext vom Parameter Navigation abzurufen?
Mein Ziel ist es, die geringere Menge an Code im Code hinter sich zu haben. Also ich möchte auch die Laufzeit DataContext im XAML definieren.
Nur ein Rat von einem anderen französisch Typ: Sie sollten nie akzentuierte Zeichen verwenden in deinen Klassen Mitglieder/Methoden. Verwenden Sie einfach ACSII-Zeichen, um Fehler zu vermeiden. –
Arnaud, wir könnten dies stundenlang diskutieren :) Um es klar zu sagen, ich habe Akzente für mehr als 10 Jahre in C# verwendet.Ich frage meine Entwickler (ok, ich zwinge sie), dies zu tun, weil ich nie irgendwelche Fehler hatte, Visual Studio verwaltet perfekt Unicode-Dateien 2/Es macht den Code viel besser lesbar 3/Ich habe das Gefühl, dass Ihre Idee kommt aus alten Zeitsprachen (ich habe Delphi seit Jahren vor der .Net-Zeit benutzt) –
@JulienFerraro Sie sollten Französisch in irgendeinem Code vermeiden, der, eines Tages, von einem nicht-französischen Sprecher gelesen werden kann. Hier zerstören Sie mindestens zwei [Naiming-Konventionen] (http://mindprod.com/jgloss/unmainnaming.html). Halte es sauber. – aloisdg