我想创建一个列表视图,其中有几个按钮。每个按钮代表一个网站名称。单击该按钮然后访问该网站。
这是XAML:
<Page
x:Class="App1.MainPage"
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"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<ListView Name="WebsiteListView">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:WebsiteModel">
<Button Content="{x:Bind WebsiteName}" Click="Button_Click"></Button>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Page>
这是WebsiteModel的模型:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace App1
{
class WebsiteModel
{
public string WebsiteName { get; set; }
public string WebsiteURL { get; set; }
}
}
最后是代码隐藏:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
namespace App1
{
public sealed partial class MainPage : Page
{
List<WebsiteModel> WebsiteModelList = new List<WebsiteModel>();
public MainPage()
{
this.InitializeComponent();
WebsiteModelList.Add(new WebsiteModel() { WebsiteName = "Google", WebsiteURL = "https://www.google.com" });
WebsiteModelList.Add(new WebsiteModel() { WebsiteName = "StackOverFlow", WebsiteURL = "https://stackoverflow.com" });
WebsiteListView.ItemsSource = WebsiteModelList;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
}
}
}
现在的问题是,当单击按钮时,我应该获得WebsiteURL
然后访问URL。但是我找不到找到模型并进一步从模型中获得WebsiteURL
的方法。
有什么办法吗?或者我的方法是完全错误的,还有更好的办法吗?谢谢。
答案 0 :(得分:1)
您可以使用Tag
的{{1}}属性,然后从后面的代码中访问该属性的值。
这是有关此操作的示例。
Xaml:
Button
代码背后:
<Button Content="{x:Bind WebsiteName}" Tag="{x:Bind WebsiteURL}" Click="Button_Click"></Button>
答案 1 :(得分:1)
只需将DataContext
中的Button
强制转换为WebsiteModel
,您将可以访问其任何属性:
private void Button_Click(object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
WebsiteModel model = btn.DataContext as WebsiteModel;
if (model != null)
{
string websiteURL = model.WebsiteURL;
}
}