Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最小宽度的Xaml Xamarin网格柱填充_Xaml_Xamarin_Data Binding - Fatal编程技术网

最小宽度的Xaml Xamarin网格柱填充

最小宽度的Xaml Xamarin网格柱填充,xaml,xamarin,data-binding,Xaml,Xamarin,Data Binding,我得到了以下网格(a的一部分): <Grid Grid.Row="0" StyleClass="headerBar"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <StackLayout G

我得到了以下网格(a的一部分):

<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>

结果:

问题:

我试图实现的是将按钮的宽度填充到剩余的空间,同时保留最小宽度,这样它就不会超出文本本身的宽度。我在ColumnDefinition中找到了MinWidth,但在Xaml中似乎不存在。我希望在Xaml中实现这一点,而不是在代码背后修复这一点

我已经尝试将ColumnDefinitions绑定到Width、WidthRequest等,并按如下方式填充第一列(就像在上面的链接中所做的那样),但它给出了一个错误。XAML:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="{Binding Width}" BindingContext="{x:Reference selectVesselButton}"/>
</Grid.ColumnDefinitions>

错误:

值小于0或不是数字

据推测,这是因为Width、WidthRequest等的值是一个字符串(或其他东西),而不是一个整数。如果是这样做的话,我如何才能将任何值类型转换为int?如果不是,你怎么做

编辑:我通过将列宽设置为50%(50*)得到了一个临时解决方案,但是,如果标签内的文本太大,标签似乎会保留两条额外的白线。为什么会这样? 我的意思是:


您可以这样更改:(定义网格.RowDefinitions



将行定义设置为“自动”只会使其如此,但这可能是因为我使用的是Fill而不是FillAndexpand。是的,奇怪的是,我最初通过添加行定义属性消除了额外的两行空白,但现在不添加该属性,也没有额外的空行,那么现在有什么问题?和
ColumnDefinition Width
您可以像上面那样更改,然后您不必将Width设置为50%。上面的屏幕截图来自整个网格行。它仍然保留那些空白的白线,但是按钮不再填充(我已经修复了)。
<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>