将 List<Point> 添加到 C# 中的变量?
Adding a List<Point> to a variable in C#?
我有一个接受 object value
的 Convert 方法。该值用这样的数组填充:
但是当我尝试将 value as List<Point>
存储在一个名为 point
的变量中时,point
保持 null
:
public class PointsToPointsCollectionsConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var points = value as List<Point>;
if (points != null)
{
var pc = new PointCollection();
foreach (var point in points)
{
pc.Add(point);
}
return pc;
}
else return null;
}
}
如何将 value as <List>
赋值给变量 var points
?
谢谢
如果仔细查看屏幕截图,您会发现 value
变量不是点数组,而是 System.Windows.Media.PointCollection
。如果您要查看 PointCollection
class 的 documentation,您会发现它没有实现 List<Point>
,因此您尝试将类型转换为 List<Point>
正在按预期评估为 null
。
您应该将类型转换更改为 PointCollection
实际实现的类型。鉴于您所做的只是遍历集合以复制它,IEnumerable<Point>
将是最合适的选择:
var points = value as IEnumerable<Point>;
我有一个接受 object value
的 Convert 方法。该值用这样的数组填充:
但是当我尝试将 value as List<Point>
存储在一个名为 point
的变量中时,point
保持 null
:
public class PointsToPointsCollectionsConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var points = value as List<Point>;
if (points != null)
{
var pc = new PointCollection();
foreach (var point in points)
{
pc.Add(point);
}
return pc;
}
else return null;
}
}
如何将 value as <List>
赋值给变量 var points
?
谢谢
如果仔细查看屏幕截图,您会发现 value
变量不是点数组,而是 System.Windows.Media.PointCollection
。如果您要查看 PointCollection
class 的 documentation,您会发现它没有实现 List<Point>
,因此您尝试将类型转换为 List<Point>
正在按预期评估为 null
。
您应该将类型转换更改为 PointCollection
实际实现的类型。鉴于您所做的只是遍历集合以复制它,IEnumerable<Point>
将是最合适的选择:
var points = value as IEnumerable<Point>;