简体   繁体   English

从事件处理程序更改属性

[英]Change property from event handler

I want a progressbar to be visible until a download is finished. 我希望在下载完成之前可以看到进度条。

In order to do that, I bind the "Visibility" property with an attribute called "loadBarVisibility". 为此,我将“Visibility”属性与名为“loadBarVisibility”的属性绑定在一起。

XAML Code : XAML代码:

<ProgressBar Visibility="{Binding loadBarVisibility}" IsIndeterminate="True"/>

ViewModel Code : ViewModel代码:

public class MainViewModel : ViewModelBase
{
    public static Visibility loadBarVisibility { get; set; }
    private const String URL = "myurl";


    public MainViewModel()
    {

        loadFlux();


        if (IsInDesignMode)
        {
            // Code runs in Blend --> create design time data.
        }
        else
        {
            // Code runs "for real"
        }
    }


    public static void loadFlux()
    {
        loadBarVisibility = Visibility.Visible;

        WebClient client = new WebClient();
        client.DownloadStringAsync(new Uri(URL));
        client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(test_downloadFinished);



    }


    public static void test_downloadFinished(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error == null)
        {

            loadBarVisibility = Visibility.Collapsed;

        }

    }

}

But the code above doesn't work : the progressbar is still visible. 但上面的代码不起作用:进度条仍然可见。

Otherwise, when I put "loadBarVisibility = Visibility.Collapsed;" 否则, 当我把“loadBarVisibility = Visibility.Collapsed;” just after "client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(test_downloadFinished);", it works. 就在“client.DownloadStringCompleted + = new DownloadStringCompletedEventHandler(test_downloadFinished);”之后,它可以工作。

Is there a way to solve my problem ? 有办法解决我的问题吗?

Thanks a lot. 非常感谢。

您的ViewModel需要实现接口INotifyPropertyChanged以通知您查看属性visiblilty已更改(http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM