XAML:将FontSize绑定到控制高度

时间:2016-05-16 04:15:59

标签: xaml xamarin xamarin.forms

Xamarin.Form页面中,我尝试将标签的FontSize绑定到同一标签的高度。

我在WPF中看到过这样做的例子:

FontSize="{Binding ElementName=CurrentPresenter, Path=Height}"

但我似乎无法像在表格中那样工作,即:

<Label
    Text="X"
    FontSize="{Binding ElementName=CurrentPresenter, Path=RequestedHeight}"
    HorizontalTextAlignment="Center"
    AbsoluteLayout.LayoutBounds="0.1, 0.5, 0.33, 0.66"
    AbsoluteLayout.LayoutFlags="All" />

(我将使用数据转换器来调整字体大小,因此根据屏幕DPI,我可以自动调整,但是现在,我只是想将它绑定到控件的高度以获得除默认系统之外的其他内容字体大小)

2 个答案:

答案 0 :(得分:0)

这种方式似乎工作正常,但不确定运行时布局性能虽然......

仅供参考:这在XAML Designer中不起作用,只在运行时

<Label
    Text="X"
    x:Name="foo"
    BindingContext="{x:Reference Name=foo}"
    FontSize="{Binding Path=Height}"
    HorizontalTextAlignment="Center"
    AbsoluteLayout.LayoutBounds="0.1, 0.5, 0.33, 0.66"
    AbsoluteLayout.LayoutFlags="All" />

答案 1 :(得分:0)

与OP问题不完全相关,但在Google中搜索“基于另一个控件的Xaml高度”几乎没有任何结果,因此请发布此内容以防其他人使用。

要更改较小按钮的大小以匹配较大按钮的大小,如下图所示

enter image description here

有多种方法可以在不使用代码的情况下执行此操作,但是如果您尝试使用的布局很困难,则以下是另一种选择。要更改较小按钮的大小而不更改这些控件的绑定,可以在XAML中给按钮命名,然后在后面的代码中执行类似的操作:

    public HomeOpenPage ()
    {            
        InitializeComponent ();
        RefreshButton.PropertyChanging += RefreshButton_PropertyChanging;

    }

    private void RefreshButton_PropertyChanging(object sender, PropertyChangingEventArgs e)
    {
        if (RefreshButton.Width != -1)
        {
            var width = RefreshButton.Width;
            CSVButton.WidthRequest = width;
            EndButton.WidthRequest = width;
        }
    }

    protected override void OnDisappearing()
    {
        RefreshButton.PropertyChanging -= RefreshButton_PropertyChanging;
        base.OnDisappearing();  
    }