C# WinRT 8.1:如何在调用viewModel上的方法后隐藏弹出按钮
我的Win 8.1应用程序中有一个弹出按钮,它使用约定在viewModel上调用一个方法。那很好。调用该方法后,如何隐藏/关闭弹出型按钮?使用代码隐藏,它将是C# WinRT 8.1:如何在调用viewModel上的方法后隐藏弹出按钮,c#,winrt-xaml,caliburn.micro,C#,Winrt Xaml,Caliburn.micro,我的Win 8.1应用程序中有一个弹出按钮,它使用约定在viewModel上调用一个方法。那很好。调用该方法后,如何隐藏/关闭弹出型按钮?使用代码隐藏,它将是f.hide(),但我无法用Caliburn.Micro来理解它 这是我的XAML和ViewModel方法 <Button Content="Add Income / Expense" Margin="35,0,0,0"> <Button.Flyout>
f.hide()
,但我无法用Caliburn.Micro来理解它
这是我的XAML和ViewModel方法
<Button Content="Add Income / Expense" Margin="35,0,0,0">
<Button.Flyout>
<Flyout>
<StackPanel>
<TextBox Name="LabelToAdd" Header="Enter Label name of income / expense:"/>
<StackPanel Orientation="Horizontal">
<Button Name="btn_Add" Content="Add"></Button>
<Button Name="btn_Cancel" Content="Cancel"></Button>
</StackPanel>
</StackPanel>
</Flyout>
</Button.Flyout>
</Button>
非常感谢您的意见,
Martin。您可以将弹出型visibilite绑定到属性。然后在方法中将其设置为false:
private bool showFlyout;
public bool ShowFlyout
{
get
{
return showFlyout;
}
set
{
showFlyout = value;
PropertyChanged("ShowFlyout");
}
}
public void btn_Add()
{
_income.Add(new Transaction (_labelToAdd, 10.00M, DateTime.Now));
_labelToAdd = string.Empty;
NotifyOfPropertyChange(() => LabelToAdd);
ShowFlyout = false;
}
假定您的类实现了INotifyPropertyChanged接口。此外,btn_Add()不是C#中方法的良好标识符。最好使用PascalCase。我所做的和它似乎起作用的是在我的弹出视图模型上创建了一个action类型的属性
public Action CloseFlyout { get; set; }
在调用视图模型时,我将其设置为hide方法
var regionflyout = new RegionFlyout();
var vm = regionflyout.DataContext as RegionViewModel;
vm.CloseFlyout = ()=> regionflyout.Hide();
regionflyout.ShowIndependent();
最后,在弹出视图模型中,我调用CloseFlyout动作
this.CloseFlyout.Invoke();
不确定这是一种多么好的方法,但它似乎起了作用。谢谢您的帮助。弹出按钮似乎不具有可见性。因此我将其绑定到StackPanel可见性,StackPanel确实消失了。但仍然有一个白色的框,一个空的弹出框,留在那里。有什么想法吗?感谢方法命名约定,我修改了我的方法名称。找到了以下链接:它正是我要找的。谢谢你抽出时间。
this.CloseFlyout.Invoke();