gpt4 book ai didi

c# - 集合 DP 的 WPF TypeConversionAttribute

转载 作者:行者123 更新时间:2023-11-30 22:40:31 24 4
gpt4 key购买 nike

我有一个 ObservableCollection 作为自定义控件中的依赖属性(比如点)。

我想这样初始化

<MyControl Points="1,1, 2,2"/>

我如何着手为特定 DP 定义和创建类型转换器?

我知道有一个内置类型转换器的专门点收集类,但我不能使用它。

最佳答案

您可以在 CLR 属性包装器上为您的依赖属性指定一个 TypeConverter。像这样:

public class MyControl : Control 
{
[TypeConverter(typeof(MyStringToPointCollectionConverter))]
public ObservableCollection<Point> Points {
get { return (ObservableCollection<Point>)GetValue(Points yProperty); }
set { SetValue(Points Property, value); }
}
...
}

转换器看起来像这样:

public class MyStringToPointCollectionConverter : TypeConverter {
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) {
if (sourceType == typeof(string)) {
return true;
}

return false;
}

public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) {
var stringValue = value as string;

if (stringValue != null) {
var result = new ObservableCollection<Point>();

// Here goes the logic of converting the given string to the list of points

return result;
}

return null;
}
}

关于c# - 集合 DP 的 WPF TypeConversionAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5154230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com