我在设置页面上的控件状态时遇到问题。例如,我有一个复选框,我想根据它的值来设置它的checked状态,我可以做得很好,但每次我这样做时都会运行Checked click事件。在这种情况下,这是一个问题,因为我有一个始终显示的CustomMessageBox。无论页面是从其他页面导航还是从墓碑恢复,都会发生这种情况。我怎样才能解决这个问题,直观地显示视图中的状态,但不运行与之相关的事件?如何在OnNavigatedTo中正确设置CheckBox控件的状态
Page.xaml
<CheckBox x:Name="CheckBox" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked">
<CheckBox.Content>
<TextBlock Text="checked or not checked" FontSize="20" TextWrapping="Wrap"/>
</CheckBox.Content>
</CheckBox>
Page.xaml.cs
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
//Set the checked state of the Checkbox when page is navigated to
if (Settings.CheckBoxEnabled.Value == true)
CheckBox.IsChecked = true;
else
CheckBox.IsChecked = false;
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
var cb = sender as CheckBox;
if (cb.IsChecked.HasValue)
{
if (cb.IsChecked.Value == true)
{
Settings.CheckBoxEnabled.Value = true;
//..code that calls another method which also shows a CustomMessageBox
}
}
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
var cb = sender as CheckBox;
if (cb.IsChecked.HasValue)
{
if (cb.IsChecked.Value == false)
{
Settings.CheckBoxEnabled.Value = false;
CustomMessageBox messageBox = new CustomMessageBox()
{
Caption = "\n" + "Checkbox change!",
Message = "\n" + "You have changed the state of the checkbox." + "\n",
LeftButtonContent = "OK"
};
messageBox.Dismissed += (s1, e1) =>
{
switch (e1.Result)
{
case CustomMessageBoxResult.LeftButton:
//Do nothing
break;
case CustomMessageBoxResult.None:
//Do nothing
break;
default:
//Do nothing
break;
}
};
messageBox.Show();
}
}
}
我工作的实施,除了上述的问题很大。如何解决页面导航时触发的这些事件?