WinRt:命名空间中不存在XAML标记

时间:2014-08-05 07:21:21

标签: windows-store-apps winrt-xaml prism

我正在创建一个我要验证文本框的项目,因此请使用prism并实现如下所示的示例

http://msdn.microsoft.com/en-us/library/windows/apps/xx130660.aspx

我已经实现的所有工作都很好但是当我更改页面的xaml中的代码时,却找不到我已经实现的类等。

例如

<prism:VisualStateAwarePage
     xmlns:prism="using:Microsoft.Practices.Prism.StoreApps"
     xmlns:vm="using:PrismExample.ViewModels"
     xmlns:Behaviors="using:PrismExample.Behaviors"
     x:Class="PrismExample.Views.UserInfoView"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">

<Page.DataContext>
    **<vm:UserInfoViewModel/>**
</Page.DataContext>

<TextBox x:Name="FirstNameValue" Grid.Row="2"
    Text="{Binding UserInfo.FirstName, Mode=TwoWay}">
    <interactivity:Interaction.Behaviors>
    <!--<Behaviors:HighlightFormFieldOnErrors PropertyErrors="{Binding UserInfo.Errors[FirstName]}">-->
    **<quickstartBehaviors:HighlightFormFieldOnErrors** PropertyErrors="{Binding UserInfo.Errors[FirstName]}" />
    </interactivity:Interaction.Behaviors>
</prism:VisualStateAwarePage>

现在,粗体文本给出了它在命名空间中不存在的错误。 任何人都可以帮助我解决这个问题。我怎么能摆脱这个。

2 个答案:

答案 0 :(得分:0)

你有:

<Page.DataContext>
    **<vm:UserInfoViewModel/>**
</Page.DataContext>

应该是:

<prism:VisualStateAwarePage.DataContext>
   <vm:UserInfoViewModel/>
</prism:VisualStateAwarePage.DataContext>

答案 1 :(得分:0)

在您的代码中,您引用了quickstartBehaviors,但您的页面中只定义了Behaviors的XMLNS。您应该查看定义HighlightFormFieldOnErrors的位置。

  

让我们假装有效。但是,Noor,我不知道该怎么说。控件的验证与视图模型中的验证不同。我的意思是,我认为可能有更好的方式供您考虑。如果您有兴趣,请阅读:http://blog.jerrynixon.com/2014/07/lets-code-handling-validation-in-your.html

祝你好运!