C# 水平堆叠布局中的受控帧宽度大小

C# 水平堆叠布局中的受控帧宽度大小,c#,xaml,xamarin,xamarin.forms,C#,Xaml,Xamarin,Xamarin.forms,我试图创建一组由不同宽度的框架组成的堆叠水平堆叠布局。最终目标是创建一个日程视图(一次查看多个日历),这与Outlook中可能出现的情况不同(请参见附图) 期望输出: 在尝试这样做时,我注意到,添加到水平堆栈布局的帧的宽度只有在所有帧具有相同的精确宽度时才会与WidthRequest匹配。如果帧的宽度不同,则宽度和宽度请求不匹配 以下是XAML: 代码如下: 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用System

我试图创建一组由不同宽度的框架组成的堆叠水平堆叠布局。最终目标是创建一个日程视图(一次查看多个日历),这与Outlook中可能出现的情况不同(请参见附图)

期望输出:

在尝试这样做时,我注意到,添加到水平堆栈布局的帧的宽度只有在所有帧具有相同的精确宽度时才会与WidthRequest匹配。如果帧的宽度不同,则宽度和宽度请求不匹配

以下是XAML:


代码如下:

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用Xamarin.Forms;
名称空间示例
{
公共部分类SamplePage1:ContentPage
{
TapGestureRecognizer tapFrameRecognizer=新的TapGestureRecognizer();
公共样本页1()
{
初始化组件();
addDataPoints();
}
public void addDataPoints()
{
tapFrameRecognizer.Tapped+=(s,e)=>
{
帧f=s作为帧;
标签l=f。内容作为标签;
l、 Text=“R:+f.请求;
l、 文本+=”,W:“+f.宽度;
l、 Text+=“\nR:”+f.HeightRequest;
l、 文本+=”,H:“+f.高度;
};
FrozenBandDataStackLayout.Children.Add(getStackLayoutWithDimensions(703600));
FrozenBandDataStackLayout.Children.Add(getStackLayoutWithDimensions(703600));
FrozenBandDataStackLayout.Children.Add(getStackLayoutWithDimensions(703600));
}
公共静态双随机数(int start,int end){return(new Random()).Next(start,end);}
公共StackLayout getStackLayoutWithDimensions(双高、双宽)
{
StackLayout sl=新的StackLayout{
垂直选项=布局选项。开始,
水平选项=布局选项。开始,
方向=堆叠方向。水平,
宽度请求=宽度,
HeightRequest=高度,
间距=0
};
//选项1:随机计算的宽度(总计=3600)--不起作用:(
int minFrameWidth=1;
int maxFrameWidth=500;
双电流宽度=0;
而((currentWidth+maxFrameWidth)
以下是三种不同的输出:

有人知道如何确保WidthRequest与实际宽度匹配吗

还有,有人能想到另一种可能的Xamarin表单解决方案吗?我尝试过使用网格,但速度非常慢(因为它不适合这种类型的使用)。如果有像水平列表视图这样的数据绑定,那就太好了


注意:此应用程序需要适用于iOS、Windows UWP,可能还适用于Android。

此问题和0个答案需要3年时间。我希望您在这段时间内选择了本机。此问题和0个答案需要3年时间。我希望您在这段时间内选择了本机。。