我使用DataTemplate定义了一个View。我希望能够将文件拖到我的View上的TextBox中,以使用完整的文件名填充它。但是,由于我的View是一个DataTemplate,它没有代码隐藏,我无法看到如何连接DragEnter和Drag事件。
在MVVM中有一种整洁的方法吗?
答案 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中一样。