XAML 条目不符合可用空间(屏幕大小)

jgzswidk  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(83)

我无法解决尺寸问题。我创建了一个小例子来展示它。我有一个输入字段和一个按钮:

<StackLayout>
    <Frame>
        <Grid ColumnDefinitions="*, Auto">
            <Entry/>
            <Button Grid.Column="1"
                    Text="ok"/>
        </Grid>
    </Frame>
</StackLayout>

这是简化的布局,请遵循此结构。
当我输入一些比条目宽度更长的文本时,它工作正常,但是当我将窗口变小后,条目(输入字段)会自行扩展并将按钮移出视图

我尝试使用HorisontalOptions="Fill"进行输入,它不起作用

1tu0hz3e

1tu0hz3e1#

你的密码是正确的。
运行:dotnet workload list
看看你的maui版本是不是7.0.86。(VS 17.6.5)(对此我有100%的把握)
或者尝试获得7.0.92。(不确定)
中间的一切都不好。以前的一切都不好。
编辑:您的版本7.0.86(VS 17.6.4)非常好,不要冒险更新。将Frame更改为Border

oxf4rvwz

oxf4rvwz2#

这是因为<Grid ColumnDefinitions="*, Auto">将使网格的宽度取决于其子元素(按钮和条目)的宽度。而当你输入文本时,条目会增加其宽度。
因此您可以检测窗口的sizechanged事件来设置条目的widthrequest。
在xaml中:

<StackLayout >
  <Frame>
      <Grid x:Name="grid" ColumnDefinitions="*, Auto">
          <Entry x:Name="entry" Grid.Column="0"/>
          <Button x:Name="button" Grid.Column="1" Text="ok"/>
      </Grid>
  </Frame>
</StackLayout>

并重写页的OnHandlerChanged事件:

protected override void OnHandlerChanged()
    {
        base.OnHandlerChanged();
#if WINDOWS
        Microsoft.UI.Xaml.Window window = (Microsoft.UI.Xaml.Window)App.Current.Windows.First<Window>().Handler.PlatformView;
        window.SizeChanged += (s, e) =>
        {
            entry.WidthRequest = grid.Width-button.Width;
        };
#endif
    }

更新:

问题是框架。删除它或使用边框而不是框架将工作。

相关问题