将ViewModel添加到Mobile View

时间:2016-07-05 17:57:08

标签: xaml uwp uwp-xaml

我正在为移动设备制作一组单独的视图,而不是为手机使用其他自适应UI状态。我可以通过在名为Views的{​​{1}}文件夹中添加一个子文件夹并添加一个与我重写的名称相同的新DeviceFamily-Mobile来实现此目的。

我有以下View可以使用并显示" MOBILE"在移动设备/模拟器上。

View

但是,如果我尝试设置<Page x:Class="MyApp.PayeesPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:behaviors="using:Template10.Behaviors" xmlns:controls="using:Template10.Controls" xmlns:core="using:Microsoft.Xaml.Interactions.Core" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:interactivity="using:Microsoft.Xaml.Interactivity" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:models="using:MyApp.Models" xmlns:viewModels="using:MyApp.ViewModels" xmlns:views="using:MyApp.Views" mc:Ignorable="d"> <RelativePanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <TextBlock x:Name="MobileTextBlock" Foreground="{ThemeResource ForegroundColorBrush}" Text="MOBILE" /> </RelativePanel> </Page> 以允许我实际显示有用的内容,例如:

DataContext

导航到<Page.DataContext> <viewModels:PayeesPageViewModel x:Name="ViewModel" /> </Page.DataContext>

时出现错误
  

无法转换类型为&#39; Windows.UI.Xaml.Controls.TextBlock&#39;的对象输入&#39; MyApp.ViewModels.PayeesPageViewModel&#39;。

这与我在原PayeesPage上设置DataContext的方式相同,但效果很好。是否有不同的方法可以在这些替代PayeesPage上设置DataContext,或者我错过了哪些内容?

1 个答案:

答案 0 :(得分:0)

事实证明,移动设备View需要与原始x:Class具有相同的Page。 ReSharper在我尝试将其称为MyApp.Views.PayeesPage时抱怨,因为已经存在,所以我将其更改为MyApp.PayeesPage。但是,当我将其切换回来以便两者都使用相同的x:Class时,一切都按预期开始工作。

不幸的是,我从ReSharper那里得到了一堆红色的波浪形,但事情正在发挥作用。以防万一将来有人遇到这个问题:

<强>查看/ PayeesPage.xaml:

<Page x:Class="MyApp.Views.PayeesPage"
 ...>

<强>查看/ DeviceFamily-移动/ PayeesPage.xaml:

<Page x:Class="MyApp.Views.PayeesPage"
 ...>