进度条可见性属性在运行时不会更改

问题描述 投票:2回答:1

我希望能够在按下按钮后隐藏进度条,但它似乎不起作用。

这是我在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.cs中,我有这个依赖属性:

    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也是如此
  • 依赖项属性已注册。

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

c# wpf dependency-properties
1个回答
0
投票

基于你的问题,我认为这里的问题之一是问题:

  1. DataContextProgressBar设置为您的viewmodel,但您的Button仅更新父控件/窗口的属性。
  2. DataContextis的ProgressBar设置为您的父控件/窗口,但您的Button仅更新您的viewmodel的属性。

如果您希望ProgressVisibility公开,请将其更改为

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

如果ProgressVisibility不需要公开,只需删除依赖项属性,然后使用viewmodel中的实现。

© www.soinside.com 2019 - 2024. All rights reserved.