我有一个功能可以控制视图中圆形进度条的可见性。
public void ShowProgressBarControl()
{
CircleProgressBar.Visibility = Visibility.Visible;
CircleProgressBar.Opacity = 1;
}
我想从视图模型中调用该方法。我怎么称呼?
答案 0 :(得分:1)
正如@tabby建议我在viewmodel和bind中使用公共属性 使用可见性转换器到
CircleProgressBar
。对于绑定opactiy,您可以直接绑定它。
Viewmodel 。 假设您使用了INotifyPropertyChanged接口。在INPC中包裹该属性。
public bool IsBusy;
public int Opacity;
SomeAction()
{
IsBusy = true;
Thread.Sleep(5000);
IsBusy = false;
Opactiy = 1;
}
<强>转换器强>
public BooleanVisibiltyConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool flag = false;
if (value is bool)
{
flag = (bool)value;
}
else if (value is bool?)
{
bool? nullable = (bool?)value;
flag = nullable.HasValue ? nullable.Value : false;
}
return (flag ? Visibility.Visible : Visibility.Collapsed);
}
}
<强> XAML 强>
在使用之前将转换器添加到窗口资源中。
<CircularProgressBar Opacity="{Binding Opactiy}" Visibility="{Binding IsBusy, Converter={StaticResource BoolToVis}}"
答案 1 :(得分:-1)
将您的视图引用传递给viewmodel的构造函数
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainWindowViewModel(this);
}
viewmodel class
public class MainWindowViewModel
{
MainWindow mWindow;
public MainWindowViewModel(MainWindow window)
{
mWindow = window;
}
}
然后你可以通过mWindow
在viewmodel中调用你的方法