C# 和 XAML 中的导航
Posted
技术标签:
【中文标题】C# 和 XAML 中的导航【英文标题】:Navigation in C# and XAML 【发布时间】:2015-04-15 21:16:35 【问题描述】:我想导航到我的 Windows Phone 8.1 应用程序中的另一个页面。如果有一个按钮,我可以通过单击它并在 event handler
中使用 Frame.Navigate(typeof(MainPage));
轻松做到这一点。但就我而言,我想导航根据整数值自动转到第二页。如果它变为零,则页面自动转到第二页。在我的情况下,我没有button
和event handler
所以这样做。我该怎么做?
【问题讨论】:
【参考方案1】:为您的视图模型实现 INotifyPropertyChanged 接口。这是一个粗略的实现,理想情况下,您将使用 mvvm 框架并根据需要向您的视图发送消息。
查看模型
public class GameStateViewModel : INotifyPropertyChanged
private int currentScore = 10;
/// <summary>
/// The timer here added to simulate whatever is supposed to be changing your value.
/// </summary>
public GameStateViewModel()
var timer = new DispatcherTimer
Interval = TimeSpan.FromSeconds(2)
;
timer.Tick += (sender, args) =>
if (this.CurrentScore > 0)
this.CurrentScore--;
else
timer.Stop();
;
timer.Start();
public event PropertyChangedEventHandler PropertyChanged;
public int CurrentScore
get return currentScore;
set
currentScore = value;
NotifyPropertyChanged("CurrentScore");
public void NotifyPropertyChanged(string propertyName)
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
后面的代码
public partial class MainPage : PhoneApplicationPage
// Constructor
public MainPage()
InitializeComponent();
var viewModel = new GameStateViewModel();
viewModel.PropertyChanged += (sender, args) =>
if (viewModel.CurrentScore <= 0)
this.NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative));
;
this.DataContext = viewModel;
Xaml
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBlock Text="Binding CurrentScore" FontSize="StaticResource PhoneFontSizeExtraLarge" />
</Grid>
【讨论】:
以上是关于C# 和 XAML 中的导航的主要内容,如果未能解决你的问题,请参考以下文章