1
我在Windows Store應用程序中綁定命令和框架導航有點困惑。我開始使用電網應用(XAML)模板從Windows應用商店的一個項目,並增加了appbar如下:Windows Store應用程序 - 如何從綁定命令中刪除
<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; }
}
現在我想找到一種方法(以正確的方式)在SampleDataSource.SaveFileAsync結束回到主框架(GroupedItemsPage.xaml)()方法執行並顯示保存成功的文件的MessageDialog。如果我不夠清楚,請告訴我。
幾乎在那裏。私有方法** Save()**不在'partial class GroupedItemPage:LayoutAwarePage'內部,而是在我的viewmodel類中** SampleDataItem **(我的意思是** this.Frame **現在不可用) 。我應該將** GroupedItemPage **的父實例傳遞給我的viewmodel構造函數嗎(這是一個很好的習慣)? – 2013-03-10 20:53:09
您可以傳遞框架或其INavigate接口 - http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.inavigate.aspx – 2013-03-10 21:23:15
它是不是傷害了原理MVVM的? – 2013-03-11 03:19:03