Windows商店应用程序-如何从绑定命令返回
本文关键字:绑定 命令 返回 应用程序 Windows | 更新日期: 2023-09-27 18:03:14
我对Windows Store应用程序中的绑定命令和框架导航有点困惑。我从Windows Store中使用Grid App (XAML)模板开始了一个项目,并添加了一个appbar如下:
<AppBar IsSticky="True" IsOpen="True">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel x:Name="LeftPanel" Orientation="Horizontal">
</StackPanel>
<StackPanel x:Name="RightPanel" Grid.Column="1" HorizontalAlignment="Right" Orientation="Horizontal">
<Button HorizontalAlignment="Stretch" Style="{StaticResource SaveAppBarButtonStyle}" Command="{Binding Item.UpdateItem}" />
</StackPanel>
</Grid>
</AppBar>
然后我在类中创建了一个属性和一个方法,如:
public ICommand UpdateItem
{
get { return new UpdateItemCommand(this); }
}
void Save()
{
SampleDataSource.UpdateGroup(this);
SampleDataSource.SaveFileAsync();
}
到目前为止一切都很好,组也更新了,文件也保存了。以下是我对UpdateItemCommand类的实现:
class UpdateItemCommand : ICommand
{
public UpdateItemCommand(SampleDataItem viewModel)
{
this.viewModel = viewModel;
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
this.viewModel.Save();
if (CanExecuteChanged != null)
{
CanExecuteChanged(this, EventArgs.Empty);
}
}
public SampleDataItem viewModel { get; private set; }
}
现在我想找到一种方法(正确的方式)回到主框架(GroupedItemsPage.xaml)在SampleDataSource.SaveFileAsync()方法执行的末尾,并显示成功保存的文件的MessageDialog。如果我说的不够清楚,请告诉我。
通过Frame发送导航参数。
函数void Save()
{
SampleDataSource.UpdateGroup(this);
SampleDataSource.SaveFileAsync();
this.Frame.Navigate(typeof(GroupedItemsPage), "Saved");
}
然后,在GroupedItemsPage中读取在LoadState函数中发送给Frame的参数,如果它不为空,则显示带有该参数的消息对话框
protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
{
if (navigationParameter != null)
{
String msg = (String) navigationParameter;
var popup = new Windows.UI.Popups.MessageDialog(msg, "Some title");
await popup.ShowAsync();
}
}