首页 新闻 会员 周边

WPF MVVM实现一个类似于windows复制粘贴的弹出框功能

0
[待解决问题]

1. UI有个ProgressControl.xaml,是用于弹出进度条窗口文件,主要内容如下:

<StackPanel><TextBlockText="{Binding Caption}"Style="{StaticResourceCaptionText}"/><BorderStyle="{StaticResourceContentBorder}"><StackPanel><StackPanelStyle="{StaticResourceContentMessageBorder}"><TextBlockText="{Binding Message}"Style="{StaticResourceContentMessage}"/><telerik:RadProgressBarMinimum="0"Maximum="100"Margin="10,10,10,0"Width="260"Height="25"Value="{Binding Value}"Visibility="Visible"/></StackPanel><StackPanelStyle="{StaticResourceButtonContainer}"><telerik:RadButtonCommand="{Binding CancelCommand}"Content="{Resx CancelBtnText}"IsCancel="True"/></StackPanel></StackPanel></Border></StackPanel>

它对应的VM属性主要是:

bool IsHidden { set; }
string Caption { get; set; }
bool IsVisible { get; set; }
string Message { get; set; }
int Value { get; set; }
ICommand CancelCommand { get; }

2. 我另一个VM中实现导出图片并且弹出进度条的功能,主要代码如下:

 _progressVM.IsVisible = true;//_progressVM是进度条窗口VM的实例
 _progressVM.Caption = "导出";

if (modeIndex == "1")
                    {
                        var navImages = NavBarSelectedDocument.DocumentImagesUC_VM.Images.Where(x => x.IsDefaultImage == false).ToList();
                        if (!isExportSplitPage)
                        {
                            navImages = NavBarSelectedDocument.DocumentImagesUC_VM.Images.Where(x => x.IsDefaultImage == false && x.IsSplitPage == false).ToList();
                        }
                        int i = 0;
                        int count = navImages.Count;
                        foreach (var item in navImages)
                        {
                            i++;
                            _progressVM.Message = item.LinkedDocument.Name + "--" + item.Image.Name;
                            _progressVM.Value = ((i * 100) / count);
                            _project.ExportDocument(item.ImagePath, exportPath, item.LinkedDocument.Name, item.Name);
                        }
                    }

_progressVM.IsVisible = false;

上面这段代码可以很好的弹出进度条窗口,可是我现在要实现取消功能,也就是弹出的窗口有个取消按钮,点击取消时,弹出窗口关闭,并且停止对图片的导出。我在progress的Cancel按钮绑定的命令里设置了IsVisible=false,但是不起作用,咋回事啊?我要怎么做才能实现这个功能,求大神帮忙,非常感谢

程序and人生的主页 程序and人生 | 初学一级 | 园豆:180
提问于:2013-03-04 18:19
< >
分享
所有回答(1)
0

既然是使用MVVM,那么在VM里面是不会去访问界面控件,而是通过绑定或者消息来实现的。

对于MVVM你的理解可能还需要多一些,我这里有一篇文章可以参考 http://www.cnblogs.com/chenxizhang/archive/2011/10/01/2197786.html

陈希章 | 园豆:2538 (老鸟四级) | 2013-03-10 09:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册