我想在 TextBlock 中找到ListView项目的名称,我真的需要:当我点击项目时,TextBlock中将是该项目的名称。例如:当我(运行)应用程序单击ListView中的项目时,该名称将位于该TextBlock中。 ListView中的项目名称也在运行应用程序时声明。谢谢!我只有这个简单的代码:
private void lstViewOfUsers_ItemClick(object sender, ItemClickEventArgs e)
{
}
答案 0 :(得分:2)
如果您想使用ItemClick事件,可以使用ItemClickEventArgs.ClickedItem
获取对所点击项目的引用。
如果您通过XAML添加ListViewItem,您应该能够将ItemClickEventArgs.ClickedItem
转换为ListViewItem
中的根元素。
例如:
<ListView Name="MyListView" ItemClick="ListView_ItemClick" IsItemClickEnabled="True">
<ListViewItem>
<TextBlock Name="Text1" Text="Text1"></TextBlock>
</ListViewItem>
<ListViewItem>
<TextBlock Name="Text2" Text="Text2"></TextBlock>
</ListViewItem>
</ListView>
背后的代码:
private void ListView_ItemClick(object sender, ItemClickEventArgs e)
{
var textBlock = e.ClickedItem as TextBlock;
Debug.WriteLine(textBlock.Text);
}
如果您将集合绑定到ListView.Source
,我们应该能够将ItemClickEventArgs.ClickedItem
转换为集合的对象。
例如:
<ListView Name="MyListView" ItemClick="ListView_ItemClick" IsItemClickEnabled="True">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding }"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
背后的代码:
private ObservableCollection<string> Items;
public MainPage()
{
this.InitializeComponent();
Items = new ObservableCollection<string>();
Items.Add("Text1");
Items.Add("Text2");
MyListView.ItemsSource = Items;
}
private void ListView_ItemClick(object sender, ItemClickEventArgs e)
{
var text = e.ClickedItem as string;
Debug.WriteLine(text);
}
答案 1 :(得分:2)
试试这个:
private void lstViewOfUsers_ItemClick(object sender, ItemClickEventArgs e)
{
myTextBlock.Text =((Control)sender).Name;
}
答案 2 :(得分:0)
很难理解你究竟在谈论什么,但看起来你可能正在寻找的是:
private void lstViewOfUsers_ItemClick(object sender, ItemClickEventArgs e)
{
myTextBlock.Text = e.DataContext as string;
}
如果您没有将纯字符串添加到列表视图,而是添加自定义对象,则可以执行myTextBlock.Text = (e.DataContext as myClass).myString
答案 3 :(得分:0)
首先,请告诉我们有关如何将项目绑定到ListView的更多详细信息 假设你有:
<ListView x:Name="MyListView"
IsItemClickEnabled="True"
ItemsSource="{x:Bind MyItems}"
ItemClick="MyListView_ItemClick">
<ListView.ItemTemplate>
<DataTemplate x:DataType="data:Item">
<TextBlock x:Name="MyTextBlock" Text="{x:Bind Name}"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
在其背后的代码中:
private List<Item> MyItems;
//Fill items of your need into this List
我的方法是创建您在ListView中填充的每个项目的标识符。标识符可以是您想要的任何类型。在这里我使用枚举。请务必为上面Category
中的每个项目设置MyItems
:
public class Item
{
public string Name{ get; set; }
public ItemCategory Category { get; set; }
}
public enum ItemCategory
{
Type1,
Type2
}
MyListView_ItemClick方法的主要工作:
private void MenuItemsListView_ItemClick(object sender, ItemClickEventArgs e)
{
var clickedItem = (Iteme)e.ClickedItem;
switch (clickedItem.Category)
{
case ItemCategory.Type1:
{
//Do your works here
break;
}
case ItemCategory.Type2:
{
//Do your works here
break;
}
}
}