Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 进度条';s的可见性属性在运行时不更改_C#_Wpf_Dependency Properties - Fatal编程技术网

C# 进度条';s的可见性属性在运行时不更改

C# 进度条';s的可见性属性在运行时不更改,c#,wpf,dependency-properties,C#,Wpf,Dependency Properties,我想在按下按钮后隐藏进度条,但它似乎不起作用 这是我在XAML中的进度条: <ProgressBar Grid.Row="1" Grid.Column="1" IsIndeterminate="True" Height="37" Margin="0,10,0,10" Visibility="{Binding ProgressVisibility, Mode=TwoWay}" RenderTransformOrigin="0.5,0.5"/> 在视图模型中,我具有以下属性:

我想在按下按钮后隐藏进度条,但它似乎不起作用

这是我在XAML中的进度条:

<ProgressBar Grid.Row="1" Grid.Column="1" IsIndeterminate="True" Height="37" Margin="0,10,0,10" Visibility="{Binding ProgressVisibility,  Mode=TwoWay}" RenderTransformOrigin="0.5,0.5"/>
在视图模型中,我具有以下属性:

    public Visibility ProgressVisibility
    {
        get { return (Visibility)GetValue(ProgressVisibilityProperty); }
        set { this.SetValue(ProgressVisibilityProperty, value); }
    }
    public static readonly DependencyProperty ProgressVisibilityProperty =
        DependencyProperty.Register("ProgressVisibility", typeof(Visibility), typeof(RecipeDownloadDialogStatusView), new PropertyMetadata(Visibility.Visible));
    private Visibility progressVisibility;
    public Visibility ProgressVisibility
    {
        get
        {
            return this.progressVisibility;
        }

        set
        {
            this.progressVisibility = value;
            this.OnPropertyChanged("ProgressVisibility");
        }
    }
当按下按钮时,我调用:

ProgressVisibility = Visibility.Hidden;
调试时:

  • 执行上面的行,但什么也没发生

  • setter被调用,OnPropertyChanged也被调用

  • 将注册依赖项属性


我真的不确定我做错了什么。任何帮助都将不胜感激。

基于您的问题,我认为这里有两个问题:

  • ProgressBar
    DataContext
    设置为viewmodel,但是
    按钮只更新父控件/窗口的属性
  • ProgressBar
    DataContext
    设置为您的父控件/窗口,但您的
    按钮
    仅更新viewmodel的属性
  • 如果希望
    ProgressVisibility
    公开,请将其更改为

    public Visibility ProgressVisibility
    {
        get => this.viewModel.ProgressVisibility;
        set => this.viewModel.ProgressVisibility = value;
    }
    

    如果
    ProgressVisibility
    不需要公开,只需删除dependency属性,在viewmodel中使用实现即可。

    这里需要dependency属性吗?是否正确设置了DataContext?我想稍后添加一个动画,但这与此无关。是否也调用了getter?可能您的
    DataContext
    有问题,您需要处理按钮中的command属性并更改视图模型中的visibility属性,还可以设置progressbar的名称并在代码隐藏中更改其visibility属性,如ProgressBarName.visibility=visibility.Hidden;由于某种原因,您有两个属性,问题是您设置了哪个属性,并且绑定到哪个属性?您需要绑定到您设置的属性,然后单击
    按钮
    。还可能有第三件事……)@第三件事是什么?首先我想看看
    按钮\u单击
    处理程序。