获取Checkbox绑定值

时间:2013-03-05 00:26:58

标签: c# .net wpf

我有一个弹出窗口,用户可以根据自己的喜好打开和关闭多次。在窗口上有4个复选框,其中包含已绑定的选中值。这个想法是,如果用户取消选中一个框然后关闭窗口,它将在下次打开时取消选中。当窗口打开时,如果有任何未选中的复选框,我需要做一些工作。我的问题是,在WindowLoadedEvent的代码隐藏中,我尝试获取复选框值,看看我是否需要先做一些工作。每次窗口加载时,每个复选框的所有isChecked值都为false,即使窗口显示它们都已被选中。

我不知道如何获得我正在寻找的价值我正在使用.net 4.0;

      <StackPanel x:Name="panelVisibilities">
                                <CheckBox x:Name="crossCorrelationViewCheck"                                 
                                          IsChecked="{Binding Path=Processor.CrossCorrelation.IsCrossCorrelationVisible}"
                                          Click="GraphVisibilityClickEvent"
                                          HorizontalAlignment="Left"/>
    ...etc


private void WindowLoadedEvent(object sender, RoutedEventArgs e)
        {
    IEnumerable<CheckBox> elements = this.panelVisibilities.Children.OfType<CheckBox>().ToList();            

                foreach (CheckBox uiElement in elements)
                {

                    bool isChecked = uiElement.DataContext;

                    if (isChecked == false)
                    {
                        //do work
                    }
                }
    }

编辑: 解释它的一个更好的方法可能是我有一个checkbox.IsChecked绑定到一个模型,但我想在显示窗口时从后面的xaml代码检查它的状态。

任何帮助将不胜感激。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您的代码可能存在两个问题。

第一:bool isChecked = uiElement.DataContext;真的有效吗?   uiElement是CheckBox,uiElement.DataContextnull。 您可以使用uiElement.IsChecked.Value来获取值。

第二:您必须在Processor.CrossCorrelation.IsCrossCorrelationVisible发生之前设置WindowLoadedEvent的属性。你可以查看你的内部代码。