Gridview itemclick in pivot
Gridview itemclick in pivot
我在枢轴控件中有一个 gridview,我想在单击 griditem 时调用 viewmodel 上的方法(带有项目 ID)。我在使用 Template10
的 UWP 项目
我的 xaml 看起来像:
<Pivot Name="FeedsPivot" ItemsSource="{Binding Feeds, Mode=OneWay}">
<Pivot.ItemTemplate>
<DataTemplate x:DataType="models:Feed">
<GridView Name="ArticlesGridView" ItemsSource="{Binding Articles, Mode=OneWay}">
<GridView.ItemTemplate>
<DataTemplate>
<userControls:FeedControl />
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</DataTemplate>
</Pivot.ItemTemplate>
</Pivot>
我想我可以在 gridview 上使用这样的东西:
ItemClick="{Binding ClickCommand, ElementName=ViewModel}"
但我总是在视图模型上下文中得到对象引用未设置到对象的实例。
视图模型在页面中被引用为:
<Page.DataContext>
<vm:MainPageViewModel x:Name="ViewModel" />
</Page.DataContext>
我还尝试为页面命名并在 ElementName
中使用该名称
这里有关于最佳实践的任何帮助吗?提前Tnx
I thought I could use something like this on the gridview:ItemClick="{Binding ClickCommand, ElementName=ViewModel}"
下面的Itemclick
EventTriggerBehavior不能直接将Binding
对象设置为ItemClick event. In your senario the XamlBehaviors SDK is recommended to use. We can use a CallMethodAction,注意GridView
启用IsItemClickEnable
.
XAML代码如下:
<GridView Name="ArticlesGridView" ItemsSource="{Binding feeds, Mode=OneWay}" IsItemClickEnabled="True" >
<Interactivity:Interaction.Behaviors>
<Core:EventTriggerBehavior EventName="ItemClick">
<Core:CallMethodAction TargetObject="{Binding DataContext, ElementName=root, Mode=OneWay}" MethodName="ArticlesGridView_ItemClick" />
</Core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
<GridView.ItemTemplate>
<DataTemplate x:DataType="models:Vipclass">
...
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</StackPanel>
MainPageViewModel.cs
中的代码如下:
public void ArticlesGridView_ItemClick(object sender, ItemClickEventArgs e)
{
...
}
上面代码段中的ElementName
绑定的是页面对象。有关如何使用和安装 XamlBehaviors
的更多详细信息,请参考 wiki of XamlBehaviors. You can also install the SDK by Xaml.Behaviors Nuget 包。
我在枢轴控件中有一个 gridview,我想在单击 griditem 时调用 viewmodel 上的方法(带有项目 ID)。我在使用 Template10
的 UWP 项目我的 xaml 看起来像:
<Pivot Name="FeedsPivot" ItemsSource="{Binding Feeds, Mode=OneWay}">
<Pivot.ItemTemplate>
<DataTemplate x:DataType="models:Feed">
<GridView Name="ArticlesGridView" ItemsSource="{Binding Articles, Mode=OneWay}">
<GridView.ItemTemplate>
<DataTemplate>
<userControls:FeedControl />
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</DataTemplate>
</Pivot.ItemTemplate>
</Pivot>
我想我可以在 gridview 上使用这样的东西:
ItemClick="{Binding ClickCommand, ElementName=ViewModel}"
但我总是在视图模型上下文中得到对象引用未设置到对象的实例。
视图模型在页面中被引用为:
<Page.DataContext>
<vm:MainPageViewModel x:Name="ViewModel" />
</Page.DataContext>
我还尝试为页面命名并在 ElementName
中使用该名称这里有关于最佳实践的任何帮助吗?提前Tnx
I thought I could use something like this on the gridview:ItemClick="{Binding ClickCommand, ElementName=ViewModel}"
下面的Itemclick
EventTriggerBehavior不能直接将Binding
对象设置为ItemClick event. In your senario the XamlBehaviors SDK is recommended to use. We can use a CallMethodAction,注意GridView
启用IsItemClickEnable
.
XAML代码如下:
<GridView Name="ArticlesGridView" ItemsSource="{Binding feeds, Mode=OneWay}" IsItemClickEnabled="True" >
<Interactivity:Interaction.Behaviors>
<Core:EventTriggerBehavior EventName="ItemClick">
<Core:CallMethodAction TargetObject="{Binding DataContext, ElementName=root, Mode=OneWay}" MethodName="ArticlesGridView_ItemClick" />
</Core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
<GridView.ItemTemplate>
<DataTemplate x:DataType="models:Vipclass">
...
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</StackPanel>
MainPageViewModel.cs
中的代码如下:
public void ArticlesGridView_ItemClick(object sender, ItemClickEventArgs e)
{
...
}
上面代码段中的ElementName
绑定的是页面对象。有关如何使用和安装 XamlBehaviors
的更多详细信息,请参考 wiki of XamlBehaviors. You can also install the SDK by Xaml.Behaviors Nuget 包。