8

ViewModelにNavigateToAccountsCommand RelayCommand プロパティがあります。ListView の外側のページ上のボタンに同じものをバインドすると、コマンドバインディングが機能します。ただし、これを ListView の DataTemplate に移動するとすぐに機能しません。

バインディングをNavigateToAccountsCommandからDataContext.NavigateToAccountsCommandに変更しようとしましたが、まだ機能していません。

あなたの助けに感謝...

<Page
x:Class="FinancePRO.App.Views.AccountsView"
DataContext="{Binding AccountsViewModel, Source={StaticResource MainViewModelLocator}}"
mc:Ignorable="d">

<Grid>
      <!--**This one is working**-->
      <Button  Command="{Binding NavigateToAccountsCommand}" >

     <!--**This one is not working**-->
        <ListView ItemsSource="{Binding AllAccounts}" >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel HorizontalAlignment="Stretch">
                      <TextBlock Text="{Binding AccountName}"/>
                      <Button  Command="{Binding NavigateToAccountsCommand}">
                                </Button>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
4

3 に答える 3

12

の内部にいる場合DataTemplateListViewデータ コンテキストは ListView の の現在の項目ですItemsSource。個々の要素NavigateToAccountsCommand内には " " プロパティと呼ばれるものが' ないため、バインディングは機能しません。AllAcounts

DataTemplateこれを修正するには、 ;の外部から何かを参照する必要があります。以下はうまくいくはずです。DataContextプロパティにアクセスできるようにする必要があるルート Grid を参照するようにバインディングを変更しNavigateToAccountsCommandます。グリッドを参照するには、Name 属性を追加してからElementNameバインディングを使用する必要があります。

    <Grid Name="Root">
          <!--**This one is working**-->
          <Button  Command="{Binding NavigateToAccountsCommand}" >

         <!--**This one is not working**-->
            <ListView ItemsSource="{Binding AllAccounts}" >
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <StackPanel HorizontalAlignment="Stretch">
                          <TextBlock Text="{Binding AccountName}"/>
                          <Button  Command"{Binding ElementName=Root, Path=DataContext.NavigateToAccountsCommand}">
                                    </Button>
                    </DataTemplate>
                </ListView.ItemTemplate>
        </ListView>
   </Grid>
于 2013-10-28T23:20:19.260 に答える
4

使用できます

<Button x:Name="cmdTabItemCloseButton" 
                                Style="{StaticResource TabItemCloseButtonStyle}"
                                Grid.Column="1" Margin="15,0,0,0"
                                Command="{Binding RelativeSource=
                {RelativeSource FindAncestor, 
                AncestorType={x:Type ListView}}, 
                Path=DataContext.NavigateToAccountsCommand}"
                                CommandParameter="{Binding}"/>
于 2013-10-29T06:21:21.570 に答える
-1

同様の問題(Win RT)があり、次を使用するだけで解決しました:

    <GridView
        x:Name="itemGridView"
        ItemClick="ItemView_ItemClick"
        IsItemClickEnabled="True"/>

次に Page クラスで:

    private void ItemView_ItemClick(object sender, ItemClickEventArgs e)
    {
        //e is the object being clicked
    }
于 2014-11-01T02:37:45.487 に答える