ColumnDefinition 中的 .Net Maui 转换器

.Net Maui converter in ColumnDefinition

在我看来,我有一个包含许多列的网格。我想 hide/show 一列并根据视图模型中的 ObservableProperty 调整其他列的大小。

我尝试绑定到 ColumnDefinition 的宽度并使用转换器将布尔值转换为 GridLength。但是无论我如何尝试,我在转换器中的断点都没有命中。

这根本不可能吗?错误?还是我还没有找到正确的语法?

我最近的尝试是这样的:

<ColumnDefinition Width="{Binding ShowColorColumn, Converter={StaticResource converters:BoolToGridLengthConverter}, ConverterParameter='80|0'}" />

您可以将 ColumnDefinitions 与 ColumnDefinitionCollection 绑定,并向其中添加多个 ColumnDefinition 对象。 喜欢:

<Grid  ColumnDefinitions="{Binding columns}">



        <Label Grid.Row="0" Grid.Column="0" BackgroundColor="Red" Text="Label1"/>
        <Label Grid.Row="0" Grid.Column="1" BackgroundColor="Yellow" Text="Label2"/>


        <Label Grid.Row="0" Grid.Column="2" BackgroundColor="Green" Text="Label3"/>
    </Grid>

代码 bdehind:

public ColumnDefinitionCollection columns { set; get; }
    public string text { set; get; }
    public GridTestPage()
    {
    
        columns = new ColumnDefinitionCollection();
    ColumnDefinition column1=new ColumnDefinition();
        ColumnDefinition column2 = new ColumnDefinition();
        ColumnDefinition column3 = new ColumnDefinition();
        column1.Width = 20;
        column2.Width = 40;
        column3.Width = 60;
        
        columns.Add(column1);
        columns.Add(column2);
        columns.Add(column3);
    
        InitializeComponent();
        
        
    }
    protected override void OnAppearing()
    {
        base.OnAppearing();
        BindingContext = this;
    }