0

我用CheckBox,Lable做了Binding,实现了BoolToVisibleOrHidden类,意思是什么时候checkBox1.IsChecked应该显示Lable,我要实现的是checkbox选中的EventHandler,我想用MessageBox实现。如果Messabox.Yes那时只应显示标签,

 <CheckBox Name="_checkBoxExpertMode" IsChecked="{Binding Path=DisplayChecked, Mode=TwoWay}" 
 <Lable  Name="_lableDisplay" Visibility="{Binding Path=DisplayChecked, Mode=OneWay, NotifyOnTargetUpdated=True, Converter={StaticResource BoolToVisConverter}}"
                                                          />

 System.Windows.Forms.DialogResult dialogResult = System.Windows.Forms.MessageBox.Show("Sure", "Some Title", System.Windows.Forms.MessageBoxButtons.YesNo);
              if (dialogResult == System.Windows.Forms.DialogResult.Yes)
            {
                _checkBoxExpertMode.IsChecked = true;
            }
           else if (dialogResult == System.Windows.Forms.DialogResult.No)
           {
               _checkBoxExpertMode.IsChecked = false;
           }

但是标签在消息框弹出之前显示。

帮帮我,提前谢谢

4

2 回答 2

2

将绑定放在复选框上并使用Checkbox.Checked 事件

<CheckBox Name="..." Checked="CheckBox_Checked"  />

在事件处理程序中,显示消息框并使用属性来指示是否应显示标签:

public class MyWindow
{
    public bool ShouldLabelBeDisplayed { get; set; }

    public void CheckBox_Checked(object sender, RoutedEventArgs e)
    {
        DialogResult dialogResult = MessageBox.Show(...);
        if (dialogResult == DialogResult.Yes)
        {
            ShouldLabelBeDisplayed = true;
        }
        else
        {
            ShouldLabelBeDisplayed = false;
        }
    }

最后,将标签的 Visible 属性绑定到此属性:

    <Label Name="..." Visibility="{Binding Path=ShouldLabelBeDisplayed, Converter={StaticResource BoolToVisConverter}}" />

可能不完全是这样,但你明白了。

于 2013-04-24T09:58:01.540 回答
0

tru 将标签的属性设置为:

yourlabel.Visibility="Hidden". 

然后当你想展示时,你应该做属性:

yourlabel.Visibility="Visible".
于 2013-04-24T09:50:01.083 回答