Xamarin.forms Xamarin表单:日期选择器未在更改时调整全宽

Xamarin.forms Xamarin表单:日期选择器未在更改时调整全宽,xamarin.forms,Xamarin.forms,我在Xamarin表单页面中添加了一个日期选择器。我面临的问题是在初始页面加载时,如果我选择的日期的文本长度大于之前选择的长度,则日期选择器在屏幕中占据的大小在更改日期时不会调整 例如,如果我最初选择的日期是2018年5月21日,如果我将日期更改为2018年11月21日,现在由于文本长度增加,屏幕上不会显示全文 请让我知道如何解决此问题 XAML: <StackLayout Style="{StaticResource layoutListItem}">

我在Xamarin表单页面中添加了一个日期选择器。我面临的问题是在初始页面加载时,如果我选择的日期的文本长度大于之前选择的长度,则日期选择器在屏幕中占据的大小在更改日期时不会调整

例如,如果我最初选择的日期是2018年5月21日,如果我将日期更改为2018年11月21日,现在由于文本长度增加,屏幕上不会显示全文

请让我知道如何解决此问题

XAML:

<StackLayout Style="{StaticResource layoutListItem}">
                            <Label Style="{StaticResource labelStandard}" Text="From" HorizontalOptions="Start" />
                            <DatePicker Date="{Binding FromDateFilter}" TextColor="#777777" VerticalOptions="CenterAndExpand" 
                                        HorizontalOptions="EndAndExpand" MaximumDate="{Binding ToDateFilter}">
                                <DatePicker.Format>dd-MMMM-yyyy</DatePicker.Format>
                                <DatePicker.Effects>
                                    <effects:EntryNoBorderEffect />
                                </DatePicker.Effects>
                            </DatePicker>
                        </StackLayout>

年月日
初始负荷:(日期范围->起始日期:2017年5月29日)

变更日期:(日期范围->自:2017年11月29日)


把你的日期选择器放在这里面。

并向您的日期选择器或其他batter发出请求,以使用Grid代替StackLayout

对于那些即使在Xamarin.Forms 5.0.0.2012版本上仍在等待修复的用户,这里有一个解决方法:

扩展
Xamarin.Forms.DatePicker
并在日期更改时调用
InvalidateMeasure

public class FixedDatePicker : DatePicker
{
    public FixedDatePicker()
    {
        DateSelected += FixedDatePicker_DateSelected;
    }

    private void FixedDatePicker_DateSelected(object sender, DateChangedEventArgs e)
    {
        InvalidateMeasure();
    }
}
使用此扩展类,而不是XAML中的默认类


我希望Xamarin团队尽快修复此错误。

您是否尝试在日期选择器中使用FillAndExpand来显示水平选项?我希望文本与右侧对齐。。。使用FillAndExpand,文本在更改时占据宽度。但是没有和右边对齐,有类似的问题并且使用网格。@J.J:你解决过这个问题吗?这个问题似乎仍然存在于Xamarin 5中…@BlueRaja DannyPflughoeft我不记得了,可能不记得了(我只是在试验Xamarin)。我现在没有安装android工具,但是我在Git上的最后一个版本的代码看起来像是
无法实现这一点,即使使用网格将文本向右对齐
public class FixedDatePicker : DatePicker
{
    public FixedDatePicker()
    {
        DateSelected += FixedDatePicker_DateSelected;
    }

    private void FixedDatePicker_DateSelected(object sender, DateChangedEventArgs e)
    {
        InvalidateMeasure();
    }
}