如何在 C# 标记中将 Frame 的高度设置为等于其宽度?

Posted

技术标签:

【中文标题】如何在 C# 标记中将 Frame 的高度设置为等于其宽度?【英文标题】:How do I set a Frame's height equal to its width in C# Markup? 【发布时间】:2021-12-11 11:18:15 【问题描述】:

在 Microsoft 的 Xamarin 文档中,他们有这个示例 here 展示了如何使用 XAML 进行操作,但我有一些动态生成的帧,因此我需要能够在 C# 中完成。

这是执行此操作的 XAML 代码,谁能帮我把它翻译成 C#?

<BoxView Color="Red"
     WidthRequest="200"
     HeightRequest="Binding Source=RelativeSource Self, Path=WidthRequest"
     HorizontalOptions="Center" />

谢谢!

【问题讨论】:

【参考方案1】:

通常在 c# 中,值存在于变量中;只需将该变量用于两个属性:

        int size = 200;
        var view = new BoxView()  WidthRequest = size, HeightRequest = size ;

如果您已经有一个设置了 WidthRequest 的视图,那么:

view.HeightRequest = view.WidthRequest;

【讨论】:

【参考方案2】:
<BoxView Color="Red"
 WidthRequest="200"
 HeightRequest="Binding Source=RelativeSource Self, Path=Width"
 HorizontalOptions="Center" VerticalOptions="Center" />

【讨论】:

请提供更多上下文,请记住,有些用户不会理解,您的代码的哪一部分解决了问题。记住:回答问题比你看起来像一个体面的答案更详细一点(童子军规则适用于 SO)【参考方案3】:

您可以使用 setBinding 方法(),如下代码所示:

    var boxview=new BoxView();
    boxview.Color=Color.CornflowerBlue;
    boxview.HorizontalOptions = LayoutOptions.Center;
    boxview.VerticalOptions = LayoutOptions.Center;
    boxview.WidthRequest=100;
    boxview.setBinding(BoxView.HeightProperty,new Binding("WidthRequest"),source:boxview);

【讨论】:

以上是关于如何在 C# 标记中将 Frame 的高度设置为等于其宽度?的主要内容,如果未能解决你的问题,请参考以下文章

获取自定义控件的固有高度

在 C# 中将字段标记为“只读”有啥好处?

如何在谷歌地图中将文本设置为标记

如何在本机反应中将图像宽度设置为 100% 并将高度设置为自动?

在 c# 中将一组成员标记为私有/公共

在 c# 中将 Object 标记添加到 X509Certificate2