Mvvm 如何控制ViewModel中的UWP弹出按钮?
我想打开和关闭viewmodel中的弹出按钮 Im使用UWP和Template10。我打算使用Template10和Template10 我创建了一个存储打开或关闭状态的bool属性。不知道如何在这里调用OpenFlyoutActionMvvm 如何控制ViewModel中的UWP弹出按钮?,mvvm,uwp,viewmodel,template10,flyout,Mvvm,Uwp,Viewmodel,Template10,Flyout,我想打开和关闭viewmodel中的弹出按钮 Im使用UWP和Template10。我打算使用Template10和Template10 我创建了一个存储打开或关闭状态的bool属性。不知道如何在这里调用OpenFlyoutAction bool _IsFlyoutOpen = default(bool); public bool IsFlyoutOpen { get { return _IsFlyoutOpen; } set
bool _IsFlyoutOpen = default(bool);
public bool IsFlyoutOpen
{
get { return _IsFlyoutOpen; }
set
{
var ofa = new OpenFlyoutAction();
if (_IsFlyoutOpen)
{
// what should i call here to open flyout
}
else
{
// what should i call here to close flyout
}
Set(ref _IsFlyoutOpen, value);
}
}
我创建了2个命令,通过更改字段来打开和关闭弹出型按钮
DelegateCommand _CloseFlyout;
public DelegateCommand CloseFlyout
=> _CloseFlyout ?? (_CloseFlyout = new DelegateCommand(() =>
{
_IsFlyoutOpen = false;
}, () => true));
DelegateCommand _OpenFlyout;
public DelegateCommand OpenFlyout
=> _OpenFlyout ?? (_OpenFlyout = new DelegateCommand(() =>
{
_IsFlyoutOpen = true;
}, () => true));
在xaml中,我使用DataTriggerBehavior监视IsFlyoutOpen属性并相应地采取行动。不确定这是不是正确的方法
<Button Content="Open flyout" Command="{x:Bind ViewModel.OpenFlyout}">
<FlyoutBase.AttachedFlyout>
<Flyout Placement="Full">
<StackPanel>
<TextBlock Text="Awesome Flyout!" />
<Button Content="Close flyout" Command="{x:Bind ViewModel.CloseFlyout}"/>
</StackPanel>
</Flyout>
</FlyoutBase.AttachedFlyout>
<Interactivity:Interaction.Behaviors>
<Core:DataTriggerBehavior Binding="{x:Bind ViewModel.IsFlyoutOpen}" ComparisonCondition="Equal" Value="True">
<Behaviors:OpenFlyoutAction />
</Core:DataTriggerBehavior>
<Core:DataTriggerBehavior Binding="{x:Bind ViewModel.IsFlyoutOpen}" ComparisonCondition="Equal" Value="False">
<Behaviors:CloseFlyoutAction />
</Core:DataTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</Button>
完整的源代码可以在这里 我想这就是你要找的
<Button Content="Open flyout">
<FlyoutBase.AttachedFlyout>
<Flyout>
<StackPanel>
<TextBlock Text="Something Useful" />
<Button Content="Close">
<!-- Call CloseFlyoutAction -->
</Button>
</StackPanel>
</Flyout>
</FlyoutBase.AttachedFlyout>
<Interactivity:Interaction.Behaviors>
<Core:EventTriggerBehavior EventName="Tapped">
<Behaviors:OpenFlyoutAction />
</Core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</Button>
开放式弹出动作
闭合弹出动作
您还可以抛出一个
条件动作
,指示在调用CloseFlyoutAction
之前必须满足一个条件。这一切都在wiki上,几乎所有的实际代码都包含在XAML中。您想什么时候打开弹出按钮?你能告诉我用户的行为吗?