2013-03-05 3 views
0

사용자가 원하는만큼 열고 닫을 수있는 팝업 창이 있습니다. 창에는 바인딩 된 확인 된 값이있는 4 개의 확인란이 있습니다. 사용자가 상자의 선택을 취소 한 다음 창을 닫으면 다음에 열 때 해당 창이 선택 취소됩니다. 선택을 취소 한 체크 상자가있는 경우 창이 열리면 일부 작업을 수행해야합니다. 내 문제는 WindowLoadedEvent의 codebehind에서 체크 상자 값을 가져와 먼저 작업해야하는지 확인하려고 할 때입니다. 윈도우가 모두 체크 된 것을 보여 주더라도 윈도우가 모든 체크 박스에 대한 모든 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

무엇? WPF에서 코드의 UI 요소를 조작하지 마십시오. 체크 박스가 바인딩 된 경우 ... 바인딩되는 대상은 무엇입니까? 왜 대신 그 데이터 항목을 조작하지 않습니까? –

+0

'Processor.CrossCorrelation.IsCrossCorrelationVisible'이 true 또는 false 인 ID를 확인할 수 없습니까? 엘리먼트를 왜 확인하고 있니? –

+0

xaml 코드에서 볼 수 없기 때문에 Processor.CrossCorrelation.IsCrossCorrelationVisible을 확인할 수 없습니다. Checbox에있는 모델 속성이며 코드 뒤에 표시되지 않습니다. –

답변

0

코드에 두 가지 문제가있을 수 있습니다.

우선 : bool isChecked = uiElement.DataContext;이 실제로 작동합니까? uiElement은 CheckBox이고 uiElement.DataContextnull입니다. uiElement.IsChecked.Value을 사용하여 값을 얻을 수 있습니다.

두 번째 : WindowLoadedEvent이 발생하기 전에 Processor.CrossCorrelation.IsCrossCorrelationVisible의 속성을 설정해야합니다. 내부 코드를 확인할 수 있습니다.

+0

Processor.CrossCorrelation.IsCrossCorrelationVisible은 창이 열리기 전에 설정됩니다. 그것은 체크 박스에 묶여있는 모델에 있습니다. 내가 뒤에있는 xaml 코드에서 IsCrossCorrelationVisible의 값을 확인하려고합니다. –

+0

xaml의 코드 IsChecked = "{Binding Path = Processor.CrossCorrelation.IsCrossCorrelationVisible}" IsChecked = "{Binding Processor.CrossCorrelation.IsCrossCorrelationVisible}"CheckBox의 DataContext가 프로세서인지 확인하십시오. – user1955050