在Windows手机中,如何在询问用户后更改复选框状态?

时间:2014-01-06 05:31:07

标签: c# windows-phone-7 checkbox windows-phone-8

在我的应用中,需要这样做

  1. 开始时,取消选中该复选框
  2. 用户点击,然后弹出一个消息框作为警报,以确保用户确实想要这样做(目前复选标记仍然崩溃)
  3. 如果用户点击“是的,我想这样做”,则会显示复选标记,现在已选中
  4. 反之亦然
  5. 我发现,当我点击复选框时,已检查事件始终会触发
    选中标记始终转为“已检查”状态

    如何解决问题??? 任何建议都会很棒,谢谢!

3 个答案:

答案 0 :(得分:1)

只需要一个技巧。与您分享样品。

将复选框上的透明背景网格与透明背景重叠。

 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <StackPanel>
                <Grid>
                    <CheckBox Name="cb" Content="cb" Checked="CheckBox_Checked_1"/>
                    <!--Grid that overlaps the checkbox-->
                    <Grid Background="Transparent" Tap="Grid_Tap_1"/> 
                </Grid>
            </StackPanel>
        </Grid>

这种重叠不会调用任何复选框事件,即使你点击它

现在在事件的代码中

    private void Grid_Tap_1(object sender, GestureEventArgs e)
    {
       if(MessageBox.Show("Message")==MessageBoxResult.Ok)
          {
           cb.IsChecked=True;
          }
    }

答案 1 :(得分:0)

取代Tap事件,尝试复选框的Checked和Unchecked Events。

注意:您可以使用IsChecked属性在复选框的“已选中”和“未检查”事件中跟踪已检查状态,并在适当的事件中编写代码。

向用户询问确认后。

如果用户点击“是”,请设置chkBox.IsChecked=true;

否则

如果用户点击“否”,请设置chkBox.IsChecked=false;

答案 2 :(得分:0)

我认为没有办法停止复选框默认行为。因此,您可以在堆栈面板中创建带有图像和textbolck的自定义控件。你应该使用“Image”控制源一对图像来取消选中,另一对用于检查。

//At start,the checkbox is unchecked
 <StackPanel x:Name="panelCheckBox" Tap="panelCheckBox_Tap_1" Orientation="Horizontal">
  <Image Source="UncheckImageSourc" x:Name="ImgeCheckBox"/>
  <TextBlock Text="CheckBox Content"/>
</StackPanel>

In Code Behind
bool IsChecked=false;

 private void panelCheckBox_Tap_1(object sender, System.Windows.Input.GestureEventArgs e)
  {
   //If user click "Yes,I want to do it",then checkmark is visible and now it is checked
   if(!IsChecked)
     {
      IsChecked =true;
      ImgeCheckBox.Source = "CheckImageSource";
     }
   else
    {
     IsChecked =false;
     ImgeCheckBox.Source = "UncheckImageSourc";
    }

  }