如何将文件从资源管理器中删除到树视图节点上

时间:2014-03-19 04:35:52

标签: c# wpf treeview

不确定为什么这不起作用。 在我的WPF中,我在ItemContainerStyle中为DROP事件定义了一个事件,在后面的代码中定义了事件处理程序。但是当我拖动文件时,我会得到一个带有诊断线的圆圈。 这是WPF代码

<TreeView ItemsSource="{Binding Roots}" Name="Tree" Margin="0,22,0,0" Background="AliceBlue">
<TreeView.ItemContainerStyle>
                <!--      This Style binds a TreeViewItem to a TreeViewItemViewModel.      -->
                <Style TargetType="{x:Type TreeViewItem}">
                    <EventSetter Event="Drop" Handler="treeView_Drop"></EventSetter>
                    <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
                    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
                    <Setter Property="FontWeight" Value="Normal" />
                    <Setter Property="ContextMenu" Value="{Binding ContextMenu}" />
                    <Style.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="FontWeight" Value="Bold" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TreeView.ItemContainerStyle>

背后的代码现在只是一个骨架。我很高兴只是采取突破点

 private void treeView_Drop(object sender, DragEventArgs e)
    {
        try
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop, true))
            {
               // just a skeleton for now
            }
        }
        catch (Exception ex)
        {

        }
    }

欢迎所有想法,谢谢

2 个答案:

答案 0 :(得分:1)

您应该设置TreeViewItem类的AllowDrop属性:

<Setter Property="AllowDrop" Value="True" />

答案 1 :(得分:0)

好的,昨晚我发现了一些可能对其他人有帮助的好信息。 确实,我无法将文件从Windows资源管理器中删除到我的树视图节点,因为我在管理模式下运行。

然后我创建了一个按钮,从click事件运行一个Windows对话框,导航到一个文件后能够成功地将它放在树视图节点上。

事实上,我有两件事要开火。第一个是事件,我在ItemContainerStyle中设置了treeview节点本身。另一个事件是HeirarchicalDataTemplate中的stackpanel实现。

我很高兴看到它有效。 (这种情况多久发生一次?)但现在我意识到我还没有将其作为部署(darn)进行测试

无论如何,Oliver是唯一申请的人,所以我会在这里给他一些工具 - 谢谢