C# 命名空间中的系统无效强制转换异常
我在应用程序中使用FluidKit。下面的代码在.NET3.5中运行良好,但在.NET4.5中引发异常C# 命名空间中的系统无效强制转换异常,c#,wpf,C#,Wpf,我在应用程序中使用FluidKit。下面的代码在.NET3.5中运行良好,但在.NET4.5中引发异常 private Viewport3D _viewport; protected override void OnVisualChildrenChanged(DependencyObject visualAdded, DependencyObject visualRemoved) { base.OnVisualChildrenChanged(visualAdded, v
private Viewport3D _viewport;
protected override void OnVisualChildrenChanged(DependencyObject visualAdded, DependencyObject visualRemoved)
{
base.OnVisualChildrenChanged(visualAdded, visualRemoved);
if (visualAdded != null)
{
UIElement elt = visualAdded as UIElement;
GeometryModel3D model = CreateMeshModel(elt);
_modelGroup.Children.Add(model);
UpdateElementIndexes(elt, true);
if (IsLoaded)
{
ReflowItems();
}
}
if (visualRemoved != null)
{
UIElement elt = visualRemoved as UIElement;
int index = (int) elt.GetValue(ItemIndexProperty);
GeometryModel3D model = _modelGroup.Children[index] as GeometryModel3D;
UpdateElementIndexes(elt, false);
_modelGroup.Children.Remove(model);
// Update SelectedIndex if needed
if (SelectedIndex >= 0 && SelectedIndex < VisibleChildrenCount)
{
ReflowItems();
}
else
{
SelectedIndex = Math.Max(0, VisibleChildrenCount - 1);
}
}
}
private void UpdateElementIndexes(UIElement affectedElement, bool attach)
{
try
{
// Below line is giving exception :(
NameScope scope = (NameScope)NameScope.GetNameScope(_viewport);
...
....
}
私有视口3D\u视口;
VisualChildrenChanged上的受保护覆盖无效(DependencyObject visualAdded,DependencyObject visualRemoved)
{
基于VisualChildrenChanged(visualAdded,visualRemoved);
如果(visualAdded!=null)
{
UIElement elt=可视化添加为UIElement;
GeometryModel3D模型=CreateMeshModel(elt);
_modelGroup.Children.Add(model);
更新元素索引(elt,true);
如果(已加载)
{
回流项();
}
}
如果(visualRemoved!=null)
{
UIElement elt=可视删除为UIElement;
int index=(int)elt.GetValue(ItemIndexProperty);
GeometryModel3D模型=_modelGroup.Children[index]作为GeometryModel3D;
更新元素索引(elt,false);
_modelGroup.Children.Remove(模型);
//如果需要,更新SelectedIndex
如果(SelectedIndex>=0&&SelectedIndex
行NameScope scope=(NameScope)NameScope.GetNameScope(_viewport);
导致异常
System.InvalidCastXpetion:无法将类型为“System.XAML.NameScope”的对象强制转换为类型为“System.Windows.NameScope”
请帮助这是最恼人的错误之一,它说的基本上是,您有两个名称相同但名称空间不同的类,并且您试图将一个类强制转换为另一个类 要解决此问题,只需重写以下行:
// change this:
//NameScope scope = (NameScope)NameScope.GetNameScope(_viewport);
// into this :
System.XAML.NameScope scope = (System.XAML.NameScope)NameScope.GetNameScope(_viewport);
编辑:
您可以始终使用var
,编译器将执行必要的命名空间导入:
您是否尝试强制转换完整的类型名称?例如:
System.XAML.NameScope scope=(System.XAML.NameScope)NameScope.GetNameScope(_viewport);
@ManfredRadlwimmer给出了很好的建议。另外,请使用检查您的,仔细查看此图像
var scope = NameScope.GetNameScope(_viewport);