【发布时间】:2013-11-25 06:04:34
【问题描述】:
我正在尝试在我的 Windows 8.1 商店应用程序 (XAML) 中遵循 MVVM 模式。
当在 UI 中单击/点击 GridViewItem 时,我想导航到新视图。我想在没有事件背后的代码的情况下执行此操作以提高可测试性(使用 MVVM Light)。
为了让我的 UI 绑定到视图模型命令,我一直在查看通过添加引用 -> Windows -> 扩展添加的 Microsoft Behaviors SDK (XAML)。
我的视图中的以下代码编译但当我点击网格视图项时爆炸。不幸的是,它提供的帮助很少,只是抛出一个未处理的 win32 异常 [3476]。
有人可以帮忙解释一下这个问题吗?
使用的命名空间是;
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
<GridView x:Name="itemGridView"
AutomationProperties.AutomationId="ItemGridView"
AutomationProperties.Name="Grouped Items"
ItemsSource="{Binding Source={StaticResource GroupedSource}}"
IsSwipeEnabled="True"
IsTapEnabled="True">
<GridView.ItemTemplate>
<DataTemplate>
<Grid Margin="0"
Height="230">
<StackPanel Orientation="Vertical"
HorizontalAlignment="Stretch">
<Image Source="{Binding Image}"
Stretch="UniformToFill"
HorizontalAlignment="Center"
VerticalAlignment="Center"
/>
<StackPanel VerticalAlignment="Bottom"
Height="45"
Margin="0,-45,0,0">
<StackPanel.Background>
<SolidColorBrush Color="Black"
Opacity="0.75"
/>
</StackPanel.Background>
<TextBlock FontSize="16"
Margin="2"
Text="{Binding Name}"
TextWrapping="Wrap"
VerticalAlignment="Bottom"
/>
</StackPanel>
</StackPanel>
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Tapped">
<core:InvokeCommandAction Command="{Binding DataContext.SummaryCatagorySelectedCommand, ElementName=LayoutRoot}" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
编辑。根据要求,我添加了视图模型,特别包含我想从我的行为中触发的命令。
public class ViewModel : ViewModelBase
{
public RelayCommand<string> SummaryCatagorySelectedCommand { get; set; }
public ViewModel()
{
//
}
}
【问题讨论】:
-
那么什么是viewModel,你在哪里绑定了viewmodel with view?
标签: xaml winrt-xaml windows-8.1