问题描述
我有一种情况,例如,在ListView
中,每个项目中都有两个Label和一个自定义的水平列表.
I have a scenario like, in a ListView
I have two Labels and a custom made horizontal List in each item.
水平列表-滚动视图中水平方向的标签堆栈.
Horizontal List - stack of Labels in a ScrollView with orientation horizontal.
我需要的是,我想引用一个位于ListView特定项目的水平列表"内的标签,然后将水平列表"中的选定标签设置为粗体.有没有办法引用ListView项目的控件?
What I need is, I want to refer a Label which is inside the Horizontal List of a particular item of the ListView and make the selected Label from the Horizontal List to Bold. Is there a way to refer a control of ListView item?
下面是填充我的ListView的代码
Below is the code for filling my ListView
myListView = new ListView
{
// Source of data items.
ItemsSource = itemsource,
HasUnevenRows = true,
RowHeight = -1,
ItemTemplate = new DataTemplate(() =>
{
Label label1 = new Label()
{
TextColor = Color.Black,
HorizontalTextAlignment = TextAlignment.Start,
FontSize = Device.GetNamedSize(NamedSize.Small, new Label())
};
label1.SetBinding<LVItem>(Label.TextProperty, indexer => indexer.Name);
Label label2 = new Label()
{
TextColor = Color.Black,
HorizontalTextAlignment = TextAlignment.Start,
FontSize = Device.GetNamedSize(NamedSize.Small, new Label())
};
label2.SetBinding<LVItem>(Label.TextProperty, indexer => indexer.SelectedNum);
//horizontal list
StackLayout sLayout = new StackLayout()
{
Orientation = StackOrientation.Horizontal,
};
for (int i = 0; i<itemLst.Count; i++)
{
Label label3 = new Label()
{
HorizontalTextAlignment = TextAlignment.Center,
TextColor = Color.Black,
FontSize = Device.GetNamedSize(NamedSize.Medium, new Label())
};
label3.Text = itemLst[i];
gestureRecognizer = new TapGestureRecognizer
{
Command = new Command(TapL_Tapped),
CommandParameter = label3,
};
label3.GestureRecognizers.Add(gestureRecognizer);
sLayout.Children.Add(label3);
}
ScrollView scroll = new ScrollView
{
Orientation = ScrollOrientation.Horizontal,
Content = new StackLayout
{
Children =
{
sLayout
}
}
};
AbsoluteLayout layout = new AbsoluteLayout();
AbsoluteLayout.SetLayoutFlags(label1, AbsoluteLayoutFlags.All);
AbsoluteLayout.SetLayoutBounds(label1, new Rectangle(0.2, 0.2, 0.8, 0.25));
AbsoluteLayout.SetLayoutFlags(scroll, AbsoluteLayoutFlags.All);
AbsoluteLayout.SetLayoutBounds(scroll, new Rectangle(0.3, 0.6, 0.8, 0.2));
AbsoluteLayout.SetLayoutFlags(label2, AbsoluteLayoutFlags.All);
AbsoluteLayout.SetLayoutBounds(label2, new Rectangle(1.1, 0.3, 0.5, 0.2));
layout.Children.Add(label1);
layout.Children.Add(scroll);
layout.Children.Add(label2);
return new ViewCell
{
View = new StackLayout
{
Children =
{
layout,
}
}
};
}
)};
推荐答案
您可以使用ItemTapped查找正在点击列表视图中的哪个项目.要使文本加粗,应在字体上使用绑定.然后在您的代码隐藏中,您可以切换该绑定的值,因此字体也会更改.让我知道这是否对您有用!
You can use the ItemTapped to find which item of your listview is getting tapped. To get the text bold you should use a binding on your font. then in your codebehind you can switch the value of that binding and so will your font change.Let me know if this worked for you!
这篇关于如何在列表视图的项目中引用控件或视图-Xamarin Forms的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!