Wpf 无法访问没有装饰器的元素上的装饰器
我尝试使用MVVM在WPF上进行一些拖放 我从Bea Stollnitz那里找到了这个链接,它提出了一个解决方案 在此处使用DragDropHelper: 但当我试图用一些事件生成组件(如datatemplate中的button或radioButton)对其进行自定义时,我在拖放时遇到了这个错误 “无法访问没有装饰器的元素上的装饰器。” 在这条线上 this.adornerLayer.Update(this.adornedlement) 您可以通过下载bea.stollnitz.com/files/46/DragDropListBox.zip轻松复制它 替换Wpf 无法访问没有装饰器的元素上的装饰器,wpf,mvvm,drag-and-drop,adorner,Wpf,Mvvm,Drag And Drop,Adorner,我尝试使用MVVM在WPF上进行一些拖放 我从Bea Stollnitz那里找到了这个链接,它提出了一个解决方案 在此处使用DragDropHelper: 但当我试图用一些事件生成组件(如datatemplate中的button或radioButton)对其进行自定义时,我在拖放时遇到了这个错误 “无法访问没有装饰器的元素上的装饰器。” 在这条线上 this.adornerLayer.Update(this.adornedlement) 您可以通过下载bea.stollnitz.com/file
<DataTemplate x:Key="pictureTemplate">
<DataTemplate.Resources>
<Style TargetType="Image">
<Setter Property="Width" Value="50" />
<Setter Property="Height" Value="50" />
<Setter Property="Margin" Value="10" />
</Style>
</DataTemplate.Resources>
<Image Source="{Binding Path=Location}" />
</DataTemplate>
但我确定在哪里添加它,这个链接也是一样的
那提议
private bool IsItemDisconnected(object item)
{
bool isDisconnected = false;
var itemType = item.GetType();
if (itemType.FullName.Equals("MS.Internal.NamedObject"))
{
isDisconnected = true;
}
return isDisconnected;
}
最后一个链接讨论了.NET4的问题,但我也有3.5上的bug,我想在这里发布,我已经找到了解决方案。读后
因此,似乎没有人受到我的问题的启发。我找到了bea stollnitz解决方案的另一个实现。使用,我最终使用事件生成模板进行了拖放。这个解决方案看起来更像是一个代码隐藏解决方案,而不是一个真正的mvvm解决方案(因为我们在视图模型中直接使用拖放事件进行管理),但是它工作起来没有bug,并且还有另一个优点,可以对拖放的项目进行排序。您有没有找到解决方案?我有同样的问题,我认为相同的代码。
public CustomAdorner(UIElement adornedElement) :
base(adornedElement)
{
visualChildren = new VisualCollection(this);
@object = new Button {Content = "prova"};
visualChildren.Add(@object);
}
protected override Visual GetVisualChild(int index)
{
return visualChildren[index];
}
private bool IsItemDisconnected(object item)
{
bool isDisconnected = false;
var itemType = item.GetType();
if (itemType.FullName.Equals("MS.Internal.NamedObject"))
{
isDisconnected = true;
}
return isDisconnected;
}
if (this.adornerLayer != null && this.contentPresenter.Content != null)
{
this.adornerLayer.Update(this.AdornedElement);
}