对于我的 Windows 8 应用程序,我试图在不使用代码的情况下在页面之间导航。例如,我的 UI 中有一个图像,但没有为该图像创建点击事件,我需要导航到另一个页面,
<Image Source="ms-appx:///Assets/Logo.png" Width="155" Height="110" Tapped="{ // Navigation method here }"/>
是否可以在这样的页面之间导航......?如果可能的话,我怎样才能让它工作?
对于我的 Windows 8 应用程序,我试图在不使用代码的情况下在页面之间导航。例如,我的 UI 中有一个图像,但没有为该图像创建点击事件,我需要导航到另一个页面,
<Image Source="ms-appx:///Assets/Logo.png" Width="155" Height="110" Tapped="{ // Navigation method here }"/>
是否可以在这样的页面之间导航......?如果可能的话,我怎样才能让它工作?
如果您询问是否可以在 .xaml 文件中指定代码,那么不,这是不可能的。
如果您询问是否可以避免将代码添加到 .xaml.cs 文件,那么是的,这是可能的。您仍然需要指定一个方法,但它甚至可以作为一个简单的 lambda 来完成。您将需要使用命令挂钩而不是事件挂钩,例如
<Button Command="{Binding GoConnectionCommand}" ... />
该命令的代码通常在 ViewModel 中定义为 MVVM 模式的一部分,Josh Smith 对它的解释比我要好得多。
XAML 只是一种没有操作部分的声明性语言,因此背后的代码是它的重要组成部分。所有交互都通过事件进行,事件只能在代码中处理。因此,使用 XAML(至少使用 WinRT XAML)不可能实现您想要的。
AlSki 提到使用 ViewModel。尽管从技术上讲,ViewModel 不是 XAML 文件的“代码隐藏”的一部分,但它仍然是代码,我相信您要求的是无代码解决方案。
ixSci 是正确的,如果没有 WinRT XAML 中的代码,就无法立即执行此操作。
在完整的 WPF 中,可以使用称为 NavigateToScreenAction 的行为来执行此操作。你可以在这里阅读。不幸的是,行为不会随 WinRT 开箱即用,但可以通过名为WinRtBehaviors的开源项目重新添加。
WinRT 没有 NavigateToScreenAction 行为,但可以创建一个。这里有一篇关于使用库创建行为的好文章。它显然需要代码来创建行为,但在创建之后,您可以在 XAML 中使用它而无需任何代码。
实际上,简短的回答是在 WinRT 上没有代码就无法导航。
开发支持、设计支持和更多的好处:http: //bit.ly/winappsupport