2015-04-03 30 views
0

我有一種情況,我需要禁用頁面上的所有文本框。 對此,我嘗試使用下面的代碼禁用WPF中的所有文本框

private void DrpDwnSelectSemTimeTable_SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
    var firstlecture = this.FirstLecture.Children.OfType<TextBox>(); 
    var secondlecture = this.SecondLecture.Children.OfType<TextBox>(); 
    var thirdlecture = this.ThirdLecture.Children.OfType<TextBox>(); 
    var fourthlecture = this.FourthLecture.Children.OfType<TextBox>(); 
    var fifthlecture = this.FifthLecture.Children.OfType<TextBox>(); 

        foreach (var item in firstlecture) 
        { 
         item.IsReadOnly = true; 
        } 
        foreach (var item in secondlecture) 
        { 
         item.IsReadOnly = true; 
        } 
        foreach (var item in thirdlecture) 
        { 
         item.IsReadOnly = true; 
        } 
        foreach (var item in fourthlecture) 
        { 
         item.IsReadOnly = true; 
        } 
        foreach (var item in fifthlecture) 
        { 
         item.IsReadOnly = true; 
        } 
} 

我的任何XAML

<Canvas> 
      <WrapPanel x:Name="TimeTableMainWrapPanel" Canvas.Left="109" Canvas.Top="195" Height="601" Width="745> 
       <TextBox x:Name="txtFirstLctrTime" Height="24" TextWrapping="Wrap" Width="115"/> 
       <TextBox x:Name="txtSecondLctrTime" Height="23" Canvas.Left="594" TextWrapping="Wrap" Canvas.Top="189" Width="115"/> 

       <WrapPanel x:Name="TimeTableSubWrapPanel" Canvas.Left="109" Canvas.Top="195" Height="601" Width="745"> 
       <WrapPanel x:Name="FirstLecture" Background="#00F0F8FF" Height="392" Width="133" Margin="0,0,10,0"> 
        <TextBox x:Name="txtMondayFirstLctr" Width="133" Margin="0" Height="30" FontSize="13" VerticalContentAlignment="Center"/> 
        <TextBox x:Name="txtTuesdayFirstLctr" Width="133" Margin="0,38,0,0" Height="30" FontSize="13" VerticalContentAlignment="Center"/> 
       </WrapPanel> 

       <WrapPanel x:Name="SecondLecture" Canvas.Top="220" Background="#00F0F8FF" Canvas.Left="270" Height="466" Width="133" Margin="8,0,10,0"> 
        <TextBox x:Name="txtMondaySecondLctr" Width="133" Margin="0,38,0,0" Height="30" VerticalContentAlignment="Center"></TextBox> 
        <TextBox x:Name="txtTuesdaySecondLctr" Width="133" Margin="0,38,0,0" Height="30" VerticalContentAlignment="Center"></TextBox> 
       </WrapPanel> 

       <WrapPanel x:Name="ThirdLecture" Canvas.Top="219" Background="#00F0F8FF" Canvas.Left="415" Height="466" Width="133" Margin="8,0,10,0"> 
        <TextBox x:Name="txtMondayThirdLctr" Width="133" Margin="0,38,0,0" Height="30" VerticalContentAlignment="Center"></TextBox> 
        <TextBox x:Name="txtTuesdayThirdLctr" Width="133" Margin="0,38,0,0" Height="30" VerticalContentAlignment="Center"></TextBox> 
       </WrapPanel> 

       <WrapPanel x:Name="FourthLecture" Canvas.Top="221" Background="#00F0F8FF" Canvas.Left="562" Height="466" Width="133" Margin="8,0,0,0"> 
        <TextBox x:Name="txtMondayFourthLctr" Width="133" Margin="0,38,0,0" Height="30" VerticalContentAlignment="Center"></TextBox> 
        <TextBox x:Name="txtTuesdayFourthLctr" Width="133" Margin="0,38,0,0" Height="30" VerticalContentAlignment="Center"></TextBox> 
       </WrapPanel> 

       <WrapPanel x:Name="FifthLecture" Canvas.Top="220" Background="#00F0F8FF" Canvas.Left="710" Height="466" Width="135" Margin="18,0,0,0"> 
        <TextBox x:Name="txtMondayFifthLctr" Width="133" Margin="0,38,0,0" Height="30" VerticalContentAlignment="Center"></TextBox> 
        <TextBox x:Name="txtTuesdayFifthLctr" Width="133" Margin="0,38,0,0" Height="30" VerticalContentAlignment="Center"></TextBox> 
       </WrapPanel> 
      </WrapPanel> 
</Canvas> 

是否有這樣做的更好的辦法?

回答

0
<WrapPanel x:Name="TimeTableMainWrapPanel" IsEnabled="False"> 
0

把你所有的文本框堆面板的下方,如下:

<StackPanel Orientation="Horizontal"> 
    <StackPanel x:Name="TextboxContainer" Orientation="Horizontal"> 
     <!-- All textboxes here --> 
    </StackPanel> 
    <Button Content="Cancel" /> 
</StackPanel> 

現在,當你點擊一個按鈕或任何事件得到觸發,內部事件禁用的StackPanel象下面這樣:

TextboxContainer.IsReadonly = true; 

所以你不需要遍歷頁面上的所有控件,甚至不需要遍歷每個文本框。所以對我而言,這是實現您目標的更優化和最快捷的方式。

注意:額外的堆疊面板會在那裏,所以先看看你的可行性!

問我是否有任何問題。

相關問題