C# 如何在Xamarin表单中创建自定义可绑定视图?
比如说,我想要一个C# 如何在Xamarin表单中创建自定义可绑定视图?,c#,.net,xamarin,xamarin.forms,C#,.net,Xamarin,Xamarin.forms,比如说,我想要一个可观察集合,它将对应一个水平滚动的按钮列表。我该怎么做 目前,我正在使用以下代码,但问题是它不适合MVVM模型,因为首先,它缺少绑定 foreach (var item in result.Items) { var button = new Button { FontSize = Device.GetNamedSize(NamedSize.Small, typeof(Button)), HeightRequest = 50,
可观察集合
,它将对应一个水平滚动的按钮列表。我该怎么做
目前,我正在使用以下代码,但问题是它不适合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,但因为它不应该(并且并没有使ListView水平的“正常”方式,旋转它,然后旋转其中的每一项感觉都是错误的),所以我不能
我想让几个按钮排成一行(很明显,我不知道开始时的编号),如下所示:
当用户单击其中一个按钮时,其余按钮的不透明度设置为0.3,它们变得不那么明显,从而产生一种错觉,即单击的按钮是某种选中的选项。在我看来,只看到您发布的代码,您所做的似乎很好,因为您的代码隐藏页面只会弄乱与您的
按钮集合相关的UI元素。因此,没有理由将UI元素的集合移动到ViewModel
我建议,当您想要添加按钮时,完全按照您在buttonStack
子项上调用add()
的方式进行操作,当您想要删除按钮时,获取对该按钮的引用,并在buttonStack
子项上调用remove()
另外,如果您想进行水平滚动操作,只需将按钮置于滚动视图中,然后将滚动视图.Orientation
设置为滚动方向.horizontal
如果我没有抓住你问题的重点,一定要让我知道。我们可以知道你想达到什么目的吗?比如有一些图纸的用例,那么我们可以给你一些其他的建议吗?在我的optionion中,水平滚动是一种令人敬畏的体验,即使在我们谈论PC时也是如此。因此,在手机中进行水平滚动是更糟糕的体验(CarouselView除外)。无论如何,有一些水平列表视图(不知道它们是否支持水平滚动)请查看编辑是否在ViewModel中显示关于选择哪个按钮的信息?@NikaGamkrelidze当然可以。我认为你们正在围绕MVVM狂热者和对MVVM不那么狂热的人展开辩论。在我看来,由于按钮是UI元素,不代表实际数据,如果在我的应用程序中有意义的话,我会将它们存储在代码后面。我只需要一个private
class-level按钮
变量来存储所选的按钮
。