入口控制扩展到StackLayout容器

时间:2017-02-01 11:22:34

标签: c# xamarin.forms

我正在使用以下(测试)代码动态创建页面内容。我期待Entry控件保持在StackLayout范围内并剪切其大的Text值。不知怎的,这不像我想要的那样。

我在这里做错了什么?

public MyPage() {
        InitializeComponent();

        var stackMain = new StackLayout() {
            Orientation = StackOrientation.Vertical,
            Spacing = 2,
            BackgroundColor = Color.Yellow
        };
        Content = stackMain;

        Padding = new Thickness(15, Device.OnPlatform(25, 5, 5), 15, 10);

        var label = new Label() {
            Text = "Test:"
        };
        stackMain.Children.Add(label);

        var stackEntry = new StackLayout() {
            Orientation = StackOrientation.Horizontal
        };

        stackMain.Children.Add(stackEntry);

        var entry = new Entry() {
            Text = "Blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
            IsEnabled = false,
            HorizontalOptions = LayoutOptions.FillAndExpand
        };
        stackEntry.Children.Add(entry);

        var button = new Button() {
            Text = "Click me"
        };
        stackEntry.Children.Add(button);

    }

This is working (short text) This is not working (long text)

2 个答案:

答案 0 :(得分:1)

你需要的是一个编辑器,条目只有一行,下面的代码经过测试,它根据文本大小修正高度:

public class App : Application
{
    public App()
    {
        // The root page of your application
        var content = new ContentPage
        {
            Padding = new Thickness(15, Device.OnPlatform(25, 5, 5), 15, 10),
            Title = "test",
            Content = new StackLayout
            {
                Spacing = 2,
                BackgroundColor = Color.Yellow,
                Children = {
                    new Label {
                        Text = "Test:"
                    },
                    new Editor {
                        Text = "Blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                        IsEnabled = false,
                        HorizontalOptions = LayoutOptions.Fill,
                        VerticalOptions = LayoutOptions.Fill
                    },
                }
            }
        };

        MainPage = new NavigationPage(content);
    }
}

希望这有帮助。

答案 1 :(得分:0)

我刚刚在编辑器控件上解决了同样的问题!

问题在于Orientation = StackOrientation.Horizontal

您需要将方向设置为StackOrientation.Vertical并且它将正确包装。

请注意,我使用的是编辑器而不是Entry。