私は「モダン UI」アプリケーションに取り組んでいるので、構文は私にとって少し新しいものであり、バインディングを適切に機能させることができないようです。
私の望みは、ViewModel を最初に設計して、アプリ ページで を子としてListView
追加しUserViewModel
、DataTemplate を自動的に見つけて UserView を作成し、提供された UserViewModel にバインドできるようにすることです。
私はWin 7デスクトップ用に書かれた別のアプリで同様のことをしていますが、それはうまくいきますが、私の人生ではなぜここでうまくいかないのかわかりません. ListView "UserViewModel" をテキストとして取得するだけです (UserControl は作成されません)。
ここでの他の唯一の違いは、非同期関数を使用するのが初めてであることです。これは、Win 8 開発のためにほとんど強制されているためです。これは、データを取得している WCF サービスから取得するメソッドです。
これが私のビューモデルの例です:
public class UserViewModel
{
private UserDTO _user { get; set; }
public UserViewModel(UserDTO user)
{
_user = user;
}
public UserViewModel(int userId)
{
SetUser(userId);
}
private async void SetUser(int userId)
{
ServiceClient proxy = new ServiceClient();
UserDTO referencedUser = await proxy.GetUserAsync(userId);
}
public string FirstName
{
get
{
return _user.FirstName;
}
}
public string LastName
{
get
{
return _user.LastName;
}
}
public string Email
{
get
{
return _user.email;
}
}
}
ビューはすべて XAML であると想定されており、次のようにアプリケーション リソースに接着されています。
<UserControl x:Class="TaskClient.Views.UserView" ...
xmlns:root="using:TaskClient"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="30"
d:DesignWidth="200">
<StackPanel Orientation="Horizontal" Margin="5, 0, 0 ,0" DataContext="{Binding}">
<TextBlock x:Name="FirstNameLabel" Text="{Binding FirstName}"/>
<TextBlock x:Name="LastNameLabel" Text="{Binding LastName}"/>
<TextBlock x:Name="EmailLabel" Text="{Binding Email}"/>
</StackPanel>
</UserControl>
と :
<Application x:Class="TaskClient.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TaskClient"
xmlns:localData="using:TaskClient.Data"
xmlns:vm="using:ViewModels"
xmlns:vw="using:TaskClient.Views">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!--
Styles that define common aspects of the platform look and feel
Required by Visual Studio project and item templates
-->
<ResourceDictionary Source="Common/StandardStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!-- Application-specific resources -->
<x:String x:Key="AppName">TaskClient</x:String>
<DataTemplate x:Key="vm:UserViewModel">
<vw:UserView />
</DataTemplate>
</ResourceDictionary>
</Application.Resources>
さまざまな例(例: http://joshsmithonwpf.wordpress.com/a-guided-tour-of-wpf/)を1時間ほど検索してみましたが、機能する例を見つけることができませんでした私の場合。
私が間違っていることは何か分かりますか?