我有一个用Xamarin编写的解决方案。主要针对UWP的目标(目前)。我在解决方案的所有按钮中写了一个客户渲染器来居中和自动换行文本:
[assembly: ExportRenderer(typeof(Button), typeof(CustomButtonRenderer))]
namespace PosExclusive.Renderers
{
public class CustomButtonRenderer : ButtonRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
base.OnElementChanged(e);
if (Control?.Content is string text)
{
var textBlock = new TextBlock
{
Text = text,
VerticalAlignment = VerticalAlignment.Center,
HorizontalAlignment = HorizontalAlignment.Center,
TextAlignment = TextAlignment.Center,
TextWrapping = TextWrapping.WrapWholeWords
};
Control.Content = textBlock;
}
}
}
}
我在页面中包含一个自定义列表视图(DLToolkit.Forms.Controls.FlowListView),其中包含以下XAML:
<controls1:FlowListView Grid.Column="1" Grid.Row="0"
SeparatorVisibility="None" HasUnevenRows="False"
FlowColumnMinWidth="100" FlowItemsSource="{Binding Items}">
<controls1:FlowListView.FlowColumnTemplate>
<DataTemplate>
<Button HeightRequest="80" BackgroundColor="DeepSkyBlue"
Text="{Binding Label}" FontSize="12"
Command="{Binding Path=BindingContext.PushItemCommand, Source={x:Reference Name=SalesPage}}"
CommandParameter="{Binding .}" />
</DataTemplate>
</controls1:FlowListView.FlowColumnTemplate>
</controls1:FlowListView>
但结果很随意。这里有一些图片(红色,你会发现没有包裹的文字(溢出按钮)):
我认为它总是存在问题的第一行,但在较长的列表视图中,问题是重复其他行。
知道为什么会出现问题?