0

ユーザーが何度でも開閉できるポップアップウィンドウがあります。ウィンドウには、チェックされた値がバインドされた4つのチェックボックスがあります。ユーザーがボックスのチェックを外してからウィンドウを閉じると、次に開いたときにチェックが外されたままになるという考え方です。チェックされていないチェックボックスがある場合にウィンドウが開いたら、いくつかの作業を行う必要があります。私の問題は、WindowLoadedEventのコードビハインドで、チェックボックスの値を取得して、最初に何らかの作業を行う必要があるかどうかを確認しようとすることです。ウィンドウにすべてのチェックボックスが表示されていても、ウィンドウがロードされるたびに、すべてのチェックボックスのすべてのisChecked値がfalseになります。

探している値を取得する方法がわかりません。.net4.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
                    }
                }
    }

編集:それを説明するためのより良い方法は、チェックボックスがあるかもしれません。IsCheckedはモデルにバインドされていますが、ウィンドウが表示されたときに背後のxamlコードからその状態を確認したいと思います。

どんな助けでもいただければ幸いです。

前もって感謝します。

4

1 に答える 1

0

コードに2つの問題があると思います。

最初:bool isChecked = uiElement.DataContext;本当に機能しますか? uiElementチェックボックスであり、uiElement.DataContextですnull。を使用uiElement.IsChecked.Valueして値を取得できます。

Processor.CrossCorrelation.IsCrossCorrelationVisible2番目:発生する前にのプロパティを設定する必要がありますWindowLoadedEvent。内部コードを確認できます。

于 2013-03-05T00:55:33.407 に答える