簡體   English   中英

UWP C#SQL Web服務GridView觸發器

[英]UWP C# SQL Webservice GridView triggers

我已經創建了用於數據檢索的類

我有帶有gridview的XAML代碼和連接到SQL Web服務的CS代碼,我可以從SQL獲取數據:-)

我的GridView有

textblock-SQL表中的數據

復選框

文本框

我想對復選框和文本框執行一些操作。 如何使我的文本框在單擊復選框后變得可見?

我已經將此代碼在沒有gridviews的其他應用程序中運行,但無法在這里運行。 如何在gridview中引用event_handler

XAML示例

<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;
         }
     }

對於CheckBox,還需要事件CheckBox_Unchecked再次將其隱藏。

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

IsChecked是一個可空類型,您甚至沒有檢查它是否為真。 只要IsChecked不為null,您的代碼將隱藏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);
}

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM