我希望能够在按下按钮后隐藏进度条,但似乎不起作用。
这是我在XAML中的进度栏:
[InstallDir]/cplex/include/ilcplex/solution.xsd
在我的.xaml.cs中,我具有以下依赖项属性:
<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");
}
}
调试时:
上面的行被执行了,但是什么也没发生。
setter被调用,OnPropertyChanged也被调用
依赖项属性已注册。
我不确定自己做错了什么。任何帮助将不胜感激。
答案 0 :(得分:0)
根据您的问题,我认为这里有两个问题:
DataContext
的{{1}}设置为您的视图模型,但是您的ProgressBar
仅更新父控件/窗口的属性。Button
中的DataContext
设置为您的父控件/窗口,但是您的ProgressBar
仅更新了视图模型的属性。如果您希望Button
公开可用,请将其更改为
ProgressVisibility
如果public Visibility ProgressVisibility
{
get => this.viewModel.ProgressVisibility;
set => this.viewModel.ProgressVisibility = value;
}
不需要公开,只需删除依赖项属性,然后在视图模型中使用实现即可。