UWP で XAML で ViewModel を指定する際に WPF とほんの少し違ったので。
■ WPF の場合
ViewModel のクラスが名前空間 WpfApp1.ViewModels
に MainPageViewModel として作っているとします。その場合 XAML で Window の属性に
xmlns:vm="clr-namespace:WpfApp1.ViewModels"
などと書くと指定することができるようになります。
ViewModel を指定するには
<Window.DataContext> <vm:MainPageViewModel/> </Window.DataContext>
などとします。
全体としては
<Window x:Class="WpfApp1.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:WpfApp1" xmlns:vm="clr-namespace:WpfApp1.ViewModels" mc:Ignorable="d" Title="MainWindow"> <Window.DataContext> <vm:MainPageViewModel/> </Window.DataContext> <Grid> <TextBlock Text="{Binding MyProperty}"/> </Grid> </Window>
といった感じです。
■ UWP の場合
clr-namespace
ではなく using
でした。
xmlns:vm="using:App1.ViewModels"
ViewModel を指定する場所は
<Window.DataContext> <vm:MainPageViewModel/> </Window.DataContext>
と特に変わりません。
全体としては
<Page x:Class="App1.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:App1" xmlns:vm="using:App1.ViewModels" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Page.DataContext> <vm:MainPageViewModel/> </Page.DataContext> <Grid> <TextBlock Text="{Binding MyProperty}"/> </Grid> </Page>
かんたんですね。