我得到以下网格的(一部分):
<Grid Grid.Row="0" StyleClass="headerBar">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackLayout Grid.Column="0" HorizontalOptions="Start" Spacing="0"
StyleClass="inGrid" x:Name="titleFreqStacklayout">
<!-- title / current vessel labels. -->
<Label StyleClass="header"
Text="OV Frequentie"/>
<Label StyleClass="headerSub" Grid.Column="0" x:Name="currentVesselLabel"
Text="huidig voertuig label"/>
</StackLayout>
<!-- vessel selection button. -->
<Button Grid.Column="1" HeightRequest="40" Margin="0, 0, 2, 0"
Text="selecteer voertuig" ClassId="selectVesselButton" x:Name="selectVesselButton"
Clicked="SwitchViewContent"/>
</Grid>
结果:
问题:
我要实现的目的是使按钮的宽度填充到左侧的空间,同时保留最小宽度,以使其不会超出文本本身的宽度。我发现something similar in WDF在ColumnDefinition上具有MinWidth,但是在Xaml中似乎不存在。我很想在Xaml中做到这一点,而不是在后面的代码中解决此问题。
我尝试将ColumnDefinitions绑定到Width,WidthRequest等,并按如下方式进行第一个Column填充(就像它们在上面的链接中所做的那样),但它给出了错误。 XAML:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="{Binding Width}" BindingContext="{x:Reference selectVesselButton}"/>
</Grid.ColumnDefinitions>
错误:
值小于0或不是数字。
大概是因为Width,WidthRequest等的值是一个字符串(或诸如此类)而不是整数。如果这是这样做的方法,那么无论将什么类型的值都转换为int,我将如何进行转换?如果不是,您该怎么做?
编辑:通过将列宽设置为50%(50 *),我得到了一个临时解决方案,但是,如果标签内的文本太大,则标签似乎会保留两条额外的白线。为什么这样做呢? 我的意思是:
答案 0 :(得分:1)
您可以这样更改:(定义 Grid.RowDefinitions )
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<StackLayout Grid.Column="0" Grid.Row="0" HorizontalOptions="Start" Spacing="0"
StyleClass="inGrid" x:Name="titleFreqStacklayout">
<!-- title / current vessel labels. -->
<Label StyleClass="header"
Text="OV Frequentie"/>
<Label StyleClass="headerSub" x:Name="currentVesselLabel"
Text="huidig voertuig label "/>
</StackLayout>
<!-- vessel selection button. -->
<Button Grid.Column="1" Grid.Row="0" HeightRequest="40" Margin="0, 0, 2, 0" VerticalOptions="CenterAndExpand"
Text="selecteer voertuig" ClassId="selectVesselButton" x:Name="selectVesselButton" Clicked="SwitchViewContent"
/>
</Grid>