Я пытаюсь сделать некоторые перетаскивании & падения на WPF с помощью MVVMне удается получить доступ к графическим элементам на элементе, который не имеет графические элементы
Я нашел эту ссылку от Bea Stollnitz http://bea.stollnitz, предполагающего решения с DragDropHelper здесь: bea.stollnitz. ком/файлы/46/DragDropListBox.zip
, но когда я пытаюсь настроить его с некоторыми событиями создания компонентов, таких как кнопки или RadioButton в DataTemplate, я эта ошибка на дрэг & капли
«не удается получить доступ на графических элементов элемент, который не имеет украшений ».
на этой линии
this.adornerLayer.Update (this.AdornedElement);
вы можете воспроизвести его легко загрузив bea.stollnitz.com/files/46/DragDropListBox.zip
и замена
<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>
по
<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>
<Grid>
<Image Source="{Binding Path=Location}" />
<RadioButton />
</Grid>
</DataTemplate>
т.е. добавление радиокнопку в шаблон
Я уже нашел ссылки, но ни один из них не объяснил чтобы решить проблему.
No events passed to WPF adorner layer
, которые предлагают добавить этот код
VisualCollection visualChildren; FrameworkElement @object;
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;
}
эту последнюю ссылку говорить о проблеме .NET 4 но у меня также есть ошибка на 3.5
Так что никто не кажется вдохновленным моим вопросом. Я нахожу еще одну реализацию решения bea stollnitz. Используя http://www.codeproject.com/KB/WPF/gong-wpf-dragdrop.aspx, я наконец-то перетащил drag & drop с шаблоном генерации событий. это решение больше похоже на решение, основанное на коде, а не на реальный mvvm (потому что мы напрямую управляем с перетаскиванием и удалением событий в модели представления), но он работает без ошибок и имеет другое преимущество, можно заказать отброшенные элементы. – Pansoul
Вы когда-нибудь находили решение? У меня такая же проблема, я думаю, тот же код. –