在MVVM DataTemplate中拖放到TextBox中

时间:2014-04-08 13:19:02

标签: wpf mvvm

我使用DataTemplate定义了一个View。我希望能够将文件拖到我的View上的TextBox中,以使用完整的文件名填充它。但是,由于我的View是一个DataTemplate,它没有代码隐藏,我无法看到如何连接DragEnter和Drag事件。

在MVVM中有一种整洁的方法吗?

1 个答案:

答案 0 :(得分:1)

如果DataTemplate驻留在资源字典中,则可以创建关联的代码隐藏文件。

假设您的资源字典被调用" Foo.xaml"。在同一个项目文件夹中创建一个同名的类文件(即" Foo.cs"),使其成为局部文件,并使其继承自ResourceDictionary。另外,在构造函数中调用InitializeComponent(): -

public partial class Foo : ResourceDictionary
{
    public Foo()
    {
         InitializeComponent();
    }

    // etc..
}

现在在你的xaml中,为ResourceDictionary元素添加一个x:Class=属性,例如: -

<ResourceDictionary x:Class="Namespace.ClassName"
                    xmlns="...etc...

您现在应该发现可以向控件添加事件,就像在UserControl中一样。