7

これは簡単な作業ですが、その方法がわかりません。リストビュー内のアイテムのクリックを聞き、対応するモデルオブジェクトを取得して、新しい画面を起動したいと思います。

これは、ListViewのXAMLです。

<ListView x:Name="ItemListView" 
    ItemTemplate="{StaticResource StoreFrontTileTemplate}"
    ItemContainerStyle="{StaticResource StoreFrontLVTileStyle}"
    Margin="0" VerticalAlignment="Top" ItemClick="MyClick" Tapped="MyTap"/>

そしてMyClick、MyTap:

private void MyClick(object sender, ItemClickEventArgs e)
{
    Debug.WriteLine("Click!");
}

private void MyTap(object sender, TappedRoutedEventArgs e)
{
    Debug.WriteLine("TAp!!" + sender.ToString() + "--" + e.ToString());
}

新しい画面に移動する方法:

this.Frame.Navigate(typeof(SecondScreen));

動作しますが、クリックしたアイテムのモデルオブジェクトが必要で、それをパラメータとして2番目の画面に渡します。

ただし、MyClickが呼び出されることはなく、MyTapはクリックされたアイテムに関する情報を提供しません。「送信者」はListViewです。

私はこれらの例をダウンロードしました:

http://code.msdn.microsoft.com/windowsapps/XAML-ListView-sample-pack-0ec6b60f

しかし、必要なものは含まれていません。マスター/詳細ビューがありますが、バインディングで機能し、完全に新しい画面を起動します。

注:私はWindows開発の初心者であり、クリックされた要素の位置を使用してコールバックを実装するAndroidまたはIOSでそれを行う通常の方法を指向しています。Windows8でそれを行う正しい方法についてはわかりません。

4

5 に答える 5

29

イベントを使用できますSelectionChanged

<ListView x:Name="ItemListView" SelectionChanged="MySelectionChanged" />

そして、あなたは例えばから選択された/削除されたアイテムを得ることができますSelectionChangedEventArgs

private void MySelectionChanged(object sender, SelectionChangedEventArgs e)
{
    Debug.WriteLine("Selected: {0}", e.AddedItems[0]);
}

または、選択機能と使用するものが必要ない場合は、次のItemClick="MyClick" ように設定IsItemClickEnabledする必要がありtrueます。

ビュー内のアイテムがインタラクションに応答してItemClickイベントを発生させるかどうかを示す値を取得または設定します。

<ListView x:Name="ItemListView" 
    ItemTemplate="{StaticResource StoreFrontTileTemplate}"
    ItemContainerStyle="{StaticResource StoreFrontLVTileStyle}"
    Margin="0" VerticalAlignment="Top" ItemClick="MyClick"  
    IsItemClickEnabled="bool" SelectionMode="None"/>

この場合、もに設定する必要があることに注意してSelectionModeくださいNone

于 2012-11-10T22:35:46.570 に答える
1

XAMLコードでlistviewのDoubleTappedイベントを使用できます。そして、C#コードでは、次の方法で位置を取得できます。

private void display_DoubleTapped_1(object sender,
     Windows.UI.Xaml.Input.DoubleTappedRoutedEventArgs e)
{
     int items = display.SelectedIndex;
     // use this index to do something 
}
于 2013-05-06T08:40:28.830 に答える
1

私はこれを使用します:

private void ListUI_Tapped(object sender, TappedRoutedEventArgs e)
    {
        if(ListUI.SelectedItems.Count != 0)
        {
            Debug.WriteLine("It's not a trap at all my friend");
        }
        else
        {
            Debug.WriteLine("Its a trap");
        }
    }
于 2016-03-07T01:23:16.357 に答える
0
       // We have a class name 'Message' in ControllerLibrary Namespace

         namespace ControllerLibrary
            {
              public class Message
                {
                   public string MessageID { get; set; }
                    public string MessageName { get; set; }
                 }
            }

    // Add name space at page heading
               xmlns:local1="using:ControllerLibrary"

      //At Gridview 

        <GridView IsItemClickEnabled="True" Name="UserMessageList">
         <GridView.ItemTemplate>
           <DataTemplate x:DataType="local1:Message">                                          <StackPanel Orientation="Horizontal">
         <Button Content="{x:Bind MessageName}" HorizontalAlignment="Left" Margin="2 0 10 0" Click="btnUserMessage_Click">
        </Button>
        </StackPanel>
        </DataTemplate>
         </GridView.ItemTemplate>
        </GridView>

  //At code Behind
    private void btnAddPage_Click(object sender, RoutedEventArgs e)
      {
          //Get selecte message
          var selectedMessage = (sender as Button).DataContext as Message;
      }
于 2016-12-27T06:30:10.090 に答える
0

XAMLに関連付けられたコードビハインドC#ファイルで、 ItemClickイベントハンドラーに引数として渡されたItemClickEventArgsオブジェクトのClickedItemプロパティを使用することをお勧めします。

例(GridViewの場合ですが、ListViewの場合も同じです)

private void GridView_ItemClick(object sender, ItemClickEventArgs e)
        {
            // This is how you determine the clicked item in a GridView,
            // and obtain the relevant element of the underlying collection
            // (to which the GridView is bound).
            // 'Tile' is here the 'type' used in the said collection.
            Tile output = e.ClickedItem as Tile;

            // ... 

        }
于 2018-09-18T19:54:38.117 に答える