Template10 を使用した UWP があります。アイテムを含むグリッドが必要OnClick
で、アイテムのイベントで別のページを開きたい。いつもの
var item = (Invitation)e.ClickedItem;
this.Frame.Navigate(typeof(MainPage), item.Id);
動作しないようです。これどうやってするの?
Template10 を使用した UWP があります。アイテムを含むグリッドが必要OnClick
で、アイテムのイベントで別のページを開きたい。いつもの
var item = (Invitation)e.ClickedItem;
this.Frame.Navigate(typeof(MainPage), item.Id);
動作しないようです。これどうやってするの?
あるページから別のページにパラメーターを渡す方法を示す簡単なサンプルを作成しました。簡単なデモンストレーションになるため、MVVM アーキテクチャは使用しません。
これが私のメインページです:
<Page
x:Class="App1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:App1"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Name="mainWindow"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ListView
Name="lvDummyData"
IsItemClickEnabled="True"
ItemClick="lvDummyData_ItemClick"
ItemsSource="{Binding ElementName=mainWindow, Path=DummyData}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Page>
ご覧のとおり、ここには特別なものは何もありません。クリックが有効なリストビューのみ。
コードビハインドは次のようになります。
public ObservableCollection<string> DummyData { get; set; }
public MainPage()
{
List<string> dummyData = new List<string>();
dummyData.Add("test item 1");
dummyData.Add("test item 2");
dummyData.Add("test item 3");
dummyData.Add("test item 4");
dummyData.Add("test item 5");
dummyData.Add("test item 6");
DummyData = new ObservableCollection<string>(dummyData);
this.InitializeComponent();
}
private void lvDummyData_ItemClick(object sender, ItemClickEventArgs e)
{
var selectedData = e.ClickedItem;
this.Frame.Navigate(typeof(SidePage), selectedData);
}
ここでは、ダミー データを入力している監視可能なコレクションがあります。それとは別に、リストビューからアイテムクリックイベントがあり、パラメーターをSideView
ページに渡します。
私の SideView ページは次のようになります。
<Page
x:Class="App1.SidePage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App1"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Name="sidePage"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Name="txtResultDisplay" />
</Grid>
</Page>
そして、これは私のコードビハインドがどのように見えるかです:
public SidePage()
{
this.InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string selectedDummyData = e.Parameter as string;
if (selectedDummyData != null)
{
txtResultDisplay.Text = selectedDummyData;
}
base.OnNavigatedTo(e);
}
ここに、OnNavigatedTo
渡されたパラメーターを取得できるイベントがあります。これはあなたに欠けている部分ですので、注意してください。これが問題の解決に役立つことを願っています。