1

グリッドビュー コントロールにバインドされた単純なリストがあり、itemview のクリック イベントでページに移動したいと考えています。

私のクラスは次のようになります。

public class GetMenu
    {
        public string titleName { get; set; }
        public string imagePath { get; set; }
        public string pagePath { get; set; }
    }

リスト付きのデータの例。

new GetMenu(){titleName = "Services", imagePath = "Bouquets.xaml", pagePath="Services.xaml"}

クリックについては、次のものもあります。

void ItemView_ItemClick(object sender, ItemClickEventArgs e)
    {
    }

eからクリックイベントデータを抽出する必要があると思いますが、これを行う方法が少しわかりません。

4

1 に答える 1

1

私があなたの質問を正しく理解している場合、つまり「クリックされた」アイテムを取得したい場合、それはかなり簡単なはずです。

var getMenu = (GetMenu)e.ClickedItem;

これでアイテムができました。内部のプロパティをナビゲーションパラメータとして使用できます。

それはあなたが考えていたものですか?

[編集]

ナビゲーション自体もかなりシンプルです。コードビハインドを使用している場合は、次のことを行う必要があります。

Frame.Navigate(typeof(YourViewForTheItem), parameters);

例えば

Frame.Navigate(typeof(ItemDetailsView), getMenu);

parametersはであるため、ターゲットビューobjectで適切にキャストする必要があります。OnNavigatedTo

あらゆる種類のMVVMフレームワークを使用している場合は、そのためのサービスもあります。たとえば、Caliburn.MicroにはがありINavigationServiceます。

もちろん、事前にタイプを知っていればそうです。

持っている文字列から「タイプ」自体を作成する場合は、リフレクションを使用する必要があります。

var viewType = Type.GetType("YourStoreApp.Views."+getMenu.pagePath.Substring(0, getMenu.pagePath.LastIndexOf("."));

pagePathがnullではないと仮定します。

タイプ文字列は完全修飾名である必要があります。つまり、完全なアセンブリ名とタイプ(拡張子なし)である必要があります。たとえば、「YourStoreApp.Views.Services」のようになります。ただし、これが機能するには、ファイル名がタイプ名を正確に反映している必要があります。

今、あなたはできる:

Frame.Navigate(viewType);
于 2013-02-12T19:02:19.117 に答える