我在Xamarin表单页面中添加了一个日期选择器。我面临的问题是,如果我选择的日期的文本长度大于以前选择的日期,那么在初始页面加载时,日期选择器在屏幕上占据的大小不会随着更改日期而改变大小。
例如,如果我最初选择的日期为2018年5月21日,并且如果我将日期更改为2018年11月21日,那么由于文本长度增加了,因此全文不会显示在屏幕上。 / p>
请让我知道如何解决此问题。
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日开始)
答案 0 :(得分:2)
对于那些即使在版本 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 团队尽快修复此错误。
答案 1 :(得分:0)
问题不在于日期选择器,而在于您选择的方法:
由于您使用StackLayout
并将日期选择器的HorizontalOptions
设置为EndAndExpand
,因此导致日期选择器没有空间放置剩余日期
我建议您做的是用EndAndExpand
代替End
或用StackLayout
代替Grid
,这将使控制100倍更容易< / p>
答案 2 :(得分:0)
<StackLayout
Orientation="Horizontal"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand">
put your DatePicker inside this.
</StackLayout>
并将WidthRequest传递给DatePicker,否则将使用网格代替StackLayout