说,我想要一个ObservableCollection<SomeModel>
对应一个水平滚动的按钮列表。我怎么能这样做?
目前,我使用以下代码,但问题是它不适合MVVM模型,因为首先它缺乏绑定。
foreach (var item in result.Items)
{
var button = new Button
{
FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Button)),
HeightRequest = 50,
WidthRequest = 80,
Text = item.Id,
};
_itemButtons.Add(button);
var frame = new Frame
{
Content = button,
Padding = new Thickness(0, 0, 0, 10)
};
button.Clicked += OnItemClicked;
Device.BeginInvokeOnMainThread(() => buttonsStack.Children.Add(frame));
}
如果列表应该是垂直的,我肯定会使用ListView,但因为它不应该(并且没有&#34;正常&#34;使ListView水平,旋转它然后旋转每个其中的项目感觉错了),我不能。
我希望连续排列几个按钮(我显然不知道他们的编号在开头),如下所示:
当用户点击按钮时,其余的按钮会被按下。不透明度设置为0.3并且它们变得不那么明显,因此产生了点击按钮是某种选定选项的错觉。
答案 0 :(得分:2)
只看到你发布的代码,在我看来,你正在做的事情看起来非常好,因为你的代码隐藏页面只是弄乱了关于你的Button
集合的UI元素。因此没有理由将UI元素集合移动到ViewModel。
我建议您在想要添加按钮的时候,通过致电Add()
孩子上的buttonStack
以及当您想删除Button
时,完全按照自己的意愿行事,得到它的引用并致电Remove()
孩子的buttonStack
。
此外,如果您想要横向滚动操作,只需将buttonStack
放在ScrollView
中,然后将ScrollView.Orientation
设置为ScrollOrientation.Horizontal
。
如果我错过了你的问题,请务必告诉我。