我在設置頁面上的控件狀態時遇到問題。例如,我有一個複選框,我想根據它的值來設置它的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();
}
}
}
我工作的實施,除了上述的問題很大。如何解決頁面導航時觸發的這些事件?