2016-09-07 55 views
0

進行數據檢索我已經創建類UWP C#SQL web服務的GridView觸發

我XAML代碼與GridView和CS代碼連接到SQL web服務,我可以從SQL獲取數據:-)

我的GridView有

文本塊 - 從SQL表

複選框

文本

數據

我想對複選框和文本框進行一些操作。如何在複選框單擊時讓我的文本框變爲可見狀態?

我已經得到了此代碼在沒有gridviews的其他應用程序工作,但我不能讓它在這裏工作。我該如何引用gridview的

XAML例子裏面event_handler

<GridView x:Name="GreenQuestionGridView" ItemsSource="{Binding}" Background="Green" Margin="0,40,0,0"> 
      <GridView.ItemTemplate> 
       <DataTemplate> 
        <Grid Height="40" Width="600" > 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Width="200" VerticalAlignment="Bottom" TextWrapping="Wrap" Text="{Binding question_green}" /> 
          <CheckBox x:Name="chkBox" Checked="chkBox_Checked" Unchecked="chkBox_Unchecked" Indeterminate="chkBox_Indeterminate" VerticalAlignment="Bottom" IsThreeState="True" /> 
          <TextBox x:Name="txtBox" Visibility="Collapsed" Width="200" VerticalAlignment="Bottom" /> 
         </StackPanel> 
        </Grid> 
       </DataTemplate> 
      </GridView.ItemTemplate> 
     </GridView> 

這裏是代碼,在其他應用程序的工作原理,但是這需要引用的GridView

private void chkBox_Checked(object sender, RoutedEventArgs e) 
    {   
     if (chkbox.IsChecked == null) 
     { 
      txtbox.Visibility = Visibility.Visible; 
     } 
     else 
     { 
      txtbox.Visibility = Visibility.Collapsed; 
     } 
    } 

回答

0

您需要的複選框還有CheckBox_Unchecked事件再次隱藏它。

<CheckBox Unchecked="CheckBox_Unchecked" Checked="CheckBox_Checked" ... />

是器isChecked如果這是真的你沒有檢查甚至可空類型。只要IsChecked不爲空,您的代碼就會隱藏txtbox。

private static void ToggleTextBoxVisibility(object sender) { 
    if(!(sender is CheckBox)) { 
     return; 
    } 
    CheckBox checkBox = sender as CheckBox; 

    foreach(var child in ((checkBox.Parent as StackPanel).Children)) { 
     if(!(child is TextBox)) { 
      continue; 
     } 

     TextBox textBox = child as TextBox; 
     if(checkBox.IsChecked.HasValue && checkBox.IsChecked.Value) { 
      textBox.Visibility = Visibility.Visible; 
     } else { 
      textBox.Visibility = Visibility.Collapsed; 
     } 
    } 
} 

private void CheckBox_Checked(object sender, RoutedEventArgs e) { 
    ToggleTextBoxVisibility(sender); 
} 

private void CheckBox_Unchecked(object sender, RoutedEventArgs e) { 
    ToggleTextBoxVisibility(sender); 
} 

乾淨的解決方案是通過綁定到視圖模型中的屬性來控制它。

+0

這真棒!感謝那:-) 作爲我的複選框是一個三態檢查,是否有可能讓它也刪除與第三國家? – braddo

+0

刪除了文本框,或隱藏了複選框? – Stefan

+0

刪除它時選中複選框取消選中,並在第三狀態顯示 目前我的工作程序已經複選框癱倒在負載 然後不確定的狀態 代碼檢查,「如果(chkbox.IsChecked == NULL) 然後使文本框可見 如果(chkbox.IsChecked == NULL){ txtbox.Visibility = Visibility.Visible; } 別的 { txtbox.Visibility = Visibility.Collapsed; } – braddo