You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为MAUI/Xamarin Forms附加属性应用ColumnDefinitionCollectionTypeConverter?

解决Xamarin Forms/MAUI中附加属性应用ColumnDefinitionCollectionTypeConverter的问题

我希望使用Xamarin Forms/MAUI提供的ColumnDefinitionCollectionTypeConverter,该转换器支持通过特定格式输入定义Grid的列。但需要将其应用到附加属性上,通常该转换器用于普通绑定属性。尝试将其标记在Setter方法上,但无法生效,代码如下:

public static readonly BindableProperty ColumnDefinitionsProperty = BindableProperty.CreateAttached(
  "ColumnDefinitions", typeof(ColumnDefinitionCollection), typeof(PH), default(ColumnDefinitionCollection),
  propertyChanged: ColumnDefinitionsChanged);

[TypeConverter(typeof(ColumnDefinitionCollectionTypeConverter))]
public static void SetColumnDefinitions(BindableObject element, ColumnDefinitionCollection value) =>
  element.SetValue(ColumnDefinitionsProperty, value);

public static ColumnDefinitionCollection GetColumnDefinitions(BindableObject element) =>
  (ColumnDefinitionCollection)element.GetValue(ColumnDefinitionsProperty);

可行解决办法

不要把TypeConverter特性标记在Setter方法上,而是直接在附加属性的定义阶段指定转换器:

修改BindableProperty.CreateAttached方法,添加defaultValueConverter参数并传入ColumnDefinitionCollectionTypeConverter的实例,具体代码如下:

public static readonly BindableProperty ColumnDefinitionsProperty = BindableProperty.CreateAttached(
    "ColumnDefinitions", 
    typeof(ColumnDefinitionCollection), 
    typeof(PH), 
    default(ColumnDefinitionCollection),
    propertyChanged: ColumnDefinitionsChanged,
    defaultValueConverter: new ColumnDefinitionCollectionTypeConverter());

public static void SetColumnDefinitions(BindableObject element, ColumnDefinitionCollection value) =>
    element.SetValue(ColumnDefinitionsProperty, value);

public static ColumnDefinitionCollection GetColumnDefinitions(BindableObject element) =>
    (ColumnDefinitionCollection)element.GetValue(ColumnDefinitionsProperty);

原理说明

附加属性的类型转换逻辑由绑定属性本身负责处理,而非Setter方法。通过在创建附加属性时指定defaultValueConverter,Xamarin Forms/MAUI会自动使用该转换器处理XAML中输入的字符串格式列定义,行为与原生Grid的ColumnDefinitions属性完全一致。

内容的提问来源于stack exchange,提问作者Rudy Spano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:09:15