Xaml 将CommandParameter绑定到GridView的SelectedItem
我使用一个Windows8应用程序,它在一个页面上显示GridView。当用户选择此网格中的一个项目并单击按钮时,下一页将加载所选项目的详细信息 我正在为此使用MVVM,并从Prims获得一个DelegateCommand:Xaml 将CommandParameter绑定到GridView的SelectedItem,xaml,gridview,mvvm,winrt-xaml,Xaml,Gridview,Mvvm,Winrt Xaml,我使用一个Windows8应用程序,它在一个页面上显示GridView。当用户选择此网格中的一个项目并单击按钮时,下一页将加载所选项目的详细信息 我正在为此使用MVVM,并从Prims获得一个DelegateCommand: public DelegateCommand<Route> ShowRouteDetailsCommand { get; private set; } 路线显示在GridView中: <GridView x:Nam
public DelegateCommand<Route> ShowRouteDetailsCommand { get; private set; }
路线显示在GridView中:
<GridView x:Name="RouteGrid"
ItemsSource="{Binding Routes}"
SelectionMode="Single">
<GridView.ItemTemplate>
<DataTemplate> ...
该命令当前添加到应用程序栏中,仅用于测试:
<AppBarButton Command="{Binding ShowRouteDetailsCommand}"
CommandParameter="{Binding SelectedValue,
ElementName=RouteGrid, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Icon="Forward" />
我的问题是,showRoutedDetails的参数总是空的。无论我是否尝试GridViews SelectedValue或SelectedItem属性,这都无关紧要
我知道我可以很容易地添加SelectedRoute属性,将SelectedItem绑定到该属性,并在ShowRoutedDetails中使用它,但这对我来说似乎有点脏。为什么不在viewModel中创建一个var并将其绑定到gridView的SelectedItem?这样,当您运行命令时,您只需读取该变量的值
<GridView x:Name="RouteGrid" ItemsSource="{Binding Routes}"
SelectionMode="Single" SelectedItem="{Binding myVar}">
<GridView.ItemTemplate>
<DataTemplate>
ElementName=RouteGrid,Mode=TwoWay,为什么它是双向的?在没有找到任何解决方案后的纯粹绝望;我建议您做2个更改1-绑定到selecteditem 2-确保网格的名称可以从按钮访问,将它们两个放在堆栈面板中只是为了进行测试。我想,为命令的执行方法提供所需的一切,而不是更改我刚刚拥有的成员变量,这要干净得多,因为绑定不能像我预期的那样工作。或者换一种方式说:你的解决方案就是我目前正在做的,但它没有达到我的期望。
<AppBarButton Command="{Binding ShowRouteDetailsCommand}"
CommandParameter="{Binding SelectedValue,
ElementName=RouteGrid, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Icon="Forward" />
<GridView x:Name="RouteGrid" ItemsSource="{Binding Routes}"
SelectionMode="Single" SelectedItem="{Binding myVar}">
<GridView.ItemTemplate>
<DataTemplate>