Mega Code Archive

 
Categories / C# / WPF
 

Use Linq to get control from a container

<Window x:Class="WpfApplication1.Window1"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     Title="WPF" SizeToContent="Height" Width="300">     <Grid Name="grid">         <Grid.RowDefinitions>             <RowDefinition Height="Auto"/>             <RowDefinition Height="*"/>         </Grid.RowDefinitions>         <Grid.ColumnDefinitions>             <ColumnDefinition/>             <ColumnDefinition/>         </Grid.ColumnDefinitions>         <Border Grid.Column="0" BorderBrush="Gray" BorderThickness="1" />         <Border Grid.Column="1" BorderBrush="Gray" BorderThickness="1" />         <StackPanel Grid.Column="0" HorizontalAlignment="Center" Margin="5" Name="spLeftContainer">             <TextBlock FontSize="16" Text="Radio Group 1" />             <RadioButton Content="Radio Button 1A" GroupName="Group1" IsChecked="True" Margin="5" Name="rbnOneA" />             <RadioButton Content="Radio Button 1B" GroupName="Group1" Margin="5" Name="rbnOneB" />             <RadioButton Content="Radio Button 1C" GroupName="Group1" Margin="5" Name="rbnOneC" />             <Separator/>             <TextBlock FontSize="16" Text="Radio Group 2" />             <RadioButton Checked="RadioButton_Checked" GroupName="Group2" Content="Radio Button 2A" IsChecked="True"                           Margin="5" Name="rbnTwoA" />             <RadioButton Checked="RadioButton_Checked" GroupName="Group2" Content="Radio Button 2B" Margin="5" Name="rbnTwoB"/>             <RadioButton Checked="RadioButton_Checked" GroupName="Group2" Content="Radio Button 2C" Margin="5" Name="rbnTwoC"/>         </StackPanel>         <StackPanel Grid.Column="1" HorizontalAlignment="Center" Margin="5" Name="spRightContainer">             <TextBlock FontSize="16" Text="Radio Group 1" />             <RadioButton Content="Radio Button 1D" GroupName="Group1" Margin="5" Name="rbnOneD" />             <RadioButton Content="Radio Button 1E" GroupName="Group1" Margin="5" Name="rbnOneE" />         </StackPanel>         <Button Content="Show Group1 Selection" Grid.ColumnSpan="2" Grid.Row="1" HorizontalAlignment="Center"                  Margin="10" MaxHeight="25" Click="Button_Click" />     </Grid> </Window> //File:Window.xaml.cs using System; using System.Linq; using System.Windows; using System.Windows.Controls; namespace WpfApplication1 {     public partial class Window1 : Window     {         public Window1()         {             InitializeComponent();         }         private void Button_Click(object sender, RoutedEventArgs e)         {             RadioButton radioButton = null;             radioButton = GetCheckedRadioButton(spLeftContainer.Children, "Group1");             if (radioButton == null)             {                 radioButton = GetCheckedRadioButton(spRightContainer.Children, "Group1");             }             MessageBox.Show(radioButton.Content + " checked.", Title);         }         private RadioButton GetCheckedRadioButton(UIElementCollection children, String groupName)         {             return children.OfType<RadioButton>().FirstOrDefault( rb => rb.IsChecked == true && rb.GroupName == groupName);         }         private void RadioButton_Checked(object sender, RoutedEventArgs e)         {             if (!this.IsInitialized) return;             RadioButton radioButton = e.OriginalSource as RadioButton;             if (radioButton != null)             {                 MessageBox.Show(radioButton.Content + " checked.", Title);             }         }     } }