C# 4.0 如何关闭radgrid过滤中使用的用户控件?

C# 4.0 如何关闭radgrid过滤中使用的用户控件?,c#-4.0,silverlight-4.0,telerik-grid,C# 4.0,Silverlight 4.0,Telerik Grid,我有一个radgrid,对于date列,我创建了一个用于过滤的自定义用户控件。我需要创建一个关闭按钮来关闭用户控件。没有我可以称之为结束的事件。我不想让可见性崩溃。我从以下内容开始: public partial class DateFilterControl : UserControl, IFilteringControl { public event CloseEventHandler Close; public delegate void CloseEventHandler

我有一个radgrid,对于date列,我创建了一个用于过滤的自定义用户控件。我需要创建一个关闭按钮来关闭用户控件。没有我可以称之为结束的事件。我不想让可见性崩溃。我从以下内容开始:

public partial class DateFilterControl : UserControl, IFilteringControl
{
    public event CloseEventHandler Close;
    public delegate void CloseEventHandler();

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        this.Close();            
    }
}

这是一个很明显即将出现的nullreference异常。我需要输入什么代码来关闭用户控件?

使用消息服务。使用此选项,您可以关闭ViewModel中的窗口,因此不需要在后端提供关闭功能。将命令属性添加到“取消”按钮

 <Button Content="Cancel" Command="{Binding CancelCommand}"/>

现在在ViewModel中,在该add中添加RelayCommand属性

 Messenger.Default.Send<bool>(true, typeof(XViewModel));
Messenger.Default.Send(true,typeof(XViewModel));
现在,在这个userControl的后端,在构造函数中添加了以下内容

 Messenger.Default.Register<bool>(this, typeof(ScheduleViewModel), (b) => 
                                        {
                                            if (b == true)
                                            {
                                                this.DialogResult = true;
                                            }
                                        });
Messenger.Default.Register(此,类型为(ScheduleViewModel),(b)=>
{
如果(b==true)
{
this.DialogResult=true;
}
});
现在你可以关上窗户了。。。 这肯定会帮助你