我希望包含在ListView DataTemplate单元格中的两个标签在屏幕上均匀地水平分割。
据我了解,
如果您使用网格并将两个cmd.exe
设置为ColumnDefinitions
,则它应该可以工作。我试过了,它没有按预期显示。
我必须在第一个Label上添加一个大的1*
才能使其正常工作。
我还尝试将Grid上的WidthRequest
和标签设置为HorizonalOptions
,但没有结果。
FillAndExpand
没有<ViewCell>
<Frame HasShadow="true" Margin="2">
<StackLayout Orientation="Horizontal" Margin="0,0,0,0" >
<StackLayout WidthRequest="20" BackgroundColor="{Binding RYGStatusColor}" >
<Label Text="{Binding RYGStatusLetter}" HorizontalTextAlignment="Center"
FontSize="Medium" FontAttributes="Bold" TextColor="White" />
</StackLayout>
<StackLayout Orientation="Vertical">
<Label Text="{Binding ProgramName}" FontSize="Medium" FontAttributes="Bold" />
<Label Text="{Binding DesignCustomerName}" FontSize="Small" />
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0"
Text="{Binding EstimatedTotalValue, Converter={StaticResource CurrencyDisplay}}"
FontSize="Small" FontAttributes="Bold" WidthRequest="1024" />
<!-- WidthRequest is a hack to force the width to be equal across the screen. -->
<Label Grid.Row="0" Grid.Column="1" FontSize="Small">
<Label.FormattedText>
<FormattedString>
<Span Text="Modified: " />
<Span Text="{Binding ModifiedDate, StringFormat='{0:M/d/yy}', Converter={StaticResource LocalTime}}}" />
</FormattedString>
</Label.FormattedText>
</Label>
</Grid>
</StackLayout>
</StackLayout>
</Frame>
</ViewCell>
骇客,我得到了以下结果:Actual Results
Row 1 "Label1 Label2 " Row 2 "Label1 Label2 "
通过黑客攻击,我得到了预期的结果:Expected Results
Row 1 "Label1 Label2 " Row 2 "Label1 Label2 "
答案 0 :(得分:0)
我怀疑Grid正在正确地自我拆分,但是它没有占用您期望的全部空间。尝试将HorizontalOptions="FillAndExpand"
添加到网格本身并进行报告。
答案 1 :(得分:0)
我希望ListView DataTemplate单元格中包含的两个标签在屏幕上均匀地水平分割。据我了解,如果使用Grid并将两个ColumnDefinitions设置为1 *,它应该可以工作。我尝试了此操作,但未按预期显示。
我在ListView datetemplate中使用您的代码,并且不使用widthrequest,得到以下结果。 Xamarin.Form版本是3.4.0.1008975。
代码如下:
<ContentPage.Content>
<ListView ItemsSource="{Binding models}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Label
Grid.Row="0"
Grid.Column="0"
BackgroundColor="Blue"
FontAttributes="Bold"
FontSize="Small"
Text="{Binding str1}" />
<!-- WidthRequest is a hack to force the width to be equal across the screen. -->
<Label
Grid.Row="0"
Grid.Column="1"
BackgroundColor="Yellow"
FontSize="Small">
<Label.FormattedText>
<FormattedString>
<Span Text="Modified: " />
<Span Text="{Binding str2}" />
</FormattedString>
</Label.FormattedText>
</Label>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage.Content>