wpf 遍历控件及其值
Xaml代码
<Window x:Class="XyExecProTime.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:XyExecProTime" mc:Ignorable="d" Title="MainWindow" Height="760" Width="600"> <Grid x:Name="rootGrid"> <TabControl x:Name="tabControl" > <TabItem Header="测试" x:Name="oocTabItem"> <StackPanel Orientation="Vertical" x:Name="ooc_stackpanel">
<WrapPanel> <TextBox x:Name="txt_a" /> </WrapPanel> <WrapPanel> <TextBox x:Name="txt_b"/> </WrapPanel> </StackPanel> </TabItem> </TabControl> </Grid> </Window>
Xaml.cs代码
/// <summary> /// 遍历控件获取TextBox中的值!!! /// </summary> /// <param name="uiControls">界面控件</param> private Dictionary<string, string> SetNotEditable(UIElementCollection uiControls) { Dictionary<string, string> retDic = new Dictionary<string, string>(); try { foreach (UIElement element in uiControls) { if (element is TextBox) { TextBox txtBox = (element as TextBox); string key = txtBox.Name; string value = txtBox.Text; retDic.Add(key, value); } else if (element is Grid) { this.SetNotEditable((element as Grid).Children); } else if (element is WrapPanel)//我用到的是主要是此段代码...大家根据自己的类别可以自定义哈... { foreach (var lab_txt in (element as WrapPanel).Children) { if (lab_txt is TextBox) { TextBox txtBox = (lab_txt as TextBox); string key = txtBox.Name; string value = txtBox.Text; retDic.Add(key, value); } } } } } catch (Exception) { throw; } return retDic; }
//调用....
Dictionary<string, string> valDic = SetNotEditable(ooc_stackpanel.Children);