Click here to Skip to main content
15,886,110 members
Articles / Desktop Programming / Windows Forms

User Settings Applied

Rate me:
Please Sign up or sign in to vote.
4.95/5 (136 votes)
5 Sep 2013CPOL10 min read 542.1K   7.5K   489  
Simplifying the .NET User Configuration for Windows Forms and WPF
<Window
  x:Class="Itenso.Solutions.Community.ConfigurationWindowsDemo.UserSettingsWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:ctrl="clr-namespace:Itenso.Solutions.Community.ConfigurationWindowsDemo"
  Title="User Settings Applied - WPF Code Behind"
  x:Name="MainWindow"
  MinWidth="500"
  MinHeight="415"
  Width="600"
  Height="415"
  Icon="/ConfigurationWindowsDemo;component/App.ico">
  <Grid
    x:Name="LayoutGrid">
    <Grid.ColumnDefinitions>
      <ColumnDefinition
        x:Name="ListColumn"
        MinWidth="75"
        Width="Auto"
        MaxWidth="300" />
      <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <ctrl:SettingListBox
      x:Name="ItemsList"
      Grid.Column="0">
    </ctrl:SettingListBox>

    <GridSplitter
      Grid.Column="0"
      Width="6"
      Background="Gray" />

    <DockPanel
      Grid.Column="1">
      <GroupBox
        DockPanel.Dock="Top"
        Margin="5"
        Header="Window Settings">
        <Grid>
          <Grid.ColumnDefinitions>
            <ColumnDefinition
              Width="1*" />
            <ColumnDefinition
              Width="2*" />
            <ColumnDefinition
              Width="120" />
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
          </Grid.RowDefinitions>
          <Label
            Grid.Column="0"
            Grid.Row="0">Location:</Label>
          <StackPanel
            Grid.Column="1"
            Grid.Row="0"
            Orientation="Horizontal">
            <TextBlock
              Text="{Binding ElementName=MainWindow, Path=Left}"
              Padding="0, 5" />
          <TextBlock
              Text=", "
              Padding="0, 5" />
          <TextBlock
              Text="{Binding ElementName=MainWindow, Path=Top}"
              Padding="0, 5" />
        </StackPanel>

          <Label
            Grid.Column="0"
            Grid.Row="1">Size:</Label>
          <StackPanel
            Grid.Column="1"
            Grid.Row="1"
            Orientation="Horizontal">
            <TextBlock
              Text="{Binding ElementName=MainWindow, Path=Width}"
              Padding="0, 5" />
          <TextBlock
              Text=" x "
              Padding="0, 5" />
          <TextBlock
              Text="{Binding ElementName=MainWindow, Path=Height}"
              Padding="0, 5" />
        </StackPanel>

          <Label
            Grid.Column="0"
            Grid.Row="2">Window State:</Label>
          <TextBlock
            Grid.Column="1"
            Grid.Row="2"
            Text="{Binding ElementName=MainWindow, Path=WindowState}"
            Padding="0, 5" />

        <Label
            Grid.Column="0"
            Grid.Row="3">Splitter Position:</Label>
        <TextBlock
            Grid.Column="1"
            Grid.Row="3"
            Text="{Binding ElementName=ListColumn, Path=Width}"
            Padding="0, 5" />

        <Label
            Grid.Column="0"
            Grid.Row="4">Alignment:</Label>
        <StackPanel
            Grid.Column="1"
            Grid.Row="4"
            VerticalAlignment="Center"
            Orientation="Horizontal">
          <RadioButton
              x:Name="AlignmentLeft"
              Content="Left"
              IsChecked="True"
              Padding="5 0 15 0" />
          <RadioButton
              x:Name="AlignmentCenter"
              Content="Center"
              Padding="5 0 15 0" />
          <RadioButton
              x:Name="AlignmentRight"
              Content="Right"
              Padding="5 0 15 0" />
        </StackPanel>
        
        <Label
            Grid.Column="0"
            Grid.Row="5">Color:</Label>
        <StackPanel
            Grid.Column="1"
            Grid.Row="5"
            VerticalAlignment="Center"
            Orientation="Horizontal">
          <TextBlock
              x:Name="WindowColorText"
              VerticalAlignment="Center"
              Padding="10 2"
              Text="{Binding ElementName=MainWindow, Path=WindowColor}">
            <TextBlock.Background>
              <SolidColorBrush
                  Color="{Binding ElementName=MainWindow, Path=WindowColor}" />
            </TextBlock.Background>
          </TextBlock>
          <Button
              Content="..."
              Padding="2 0"
              Margin="5 0"
              HorizontalAlignment="Right"
              Click="ButtonChangeColor" />
        </StackPanel>
                   
        <StackPanel
            Grid.Column="2"
            Grid.Row="0"
            Grid.RowSpan="5"
            HorizontalAlignment="Right">
          <CheckBox
              x:Name="SaveAsDefaultOption"
              Content="Save as Default"
              Margin="5"
              HorizontalAlignment="Right"
              ToolTip="Save window settings on close"
              IsChecked="True" />
          <Button
              Content="Reset Settings"
              Width="100"
              Margin="5"
              ToolTip="Reset window settings to the default"
              Click="ButtonResetSettings" />
          <Button
              Content="Reload Settings"
              Width="100"
              Margin="5"
              ToolTip="Reload last saved window settings"
              Click="ButtonReloadSettings" />
          <Button
              Content="Save Settings"
              Width="100"
              Margin="5"
              ToolTip="Save current window settings"
              Click="ButtonSaveSettings" />
        </StackPanel>
      </Grid>
      </GroupBox>

      <GroupBox
        DockPanel.Dock="Top"
        Margin="5"
        Header="Control Settings">
        <Grid>
          <Grid.ColumnDefinitions>
            <ColumnDefinition
              Width="1*" />
            <ColumnDefinition
              Width="3*" />
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
            <RowDefinition />
          </Grid.RowDefinitions>
          <Label
            Grid.Column="0"
            Grid.Row="0">Selected Item:</Label>
          <TextBlock
            Grid.Column="1"
            Grid.Row="0"
            Text="{Binding ElementName=ItemsList, Path=SelectedValue}"
            Padding="0, 5" />
      </Grid>
      </GroupBox>

      <GroupBox
        DockPanel.Dock="Top"
        Margin="5"
        Header="Application Settings">
        <Grid>
          <Grid.ColumnDefinitions>
            <ColumnDefinition
              Width="1*" />
            <ColumnDefinition
              Width="3*" />
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
            <RowDefinition />
          </Grid.RowDefinitions>
          <Label
            Grid.Column="0"
            Grid.Row="0">Host:</Label>
          <TextBox
            x:Name="HostEdit"
            Grid.Column="1"
            Grid.Row="0"
            Height="20" />
        </Grid>
      </GroupBox>

      <GroupBox
        DockPanel.Dock="Top"
        Margin="5"
        Header="User Configuration">
        <Grid>
          <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition
              Width="Auto" />
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
            <RowDefinition />
          </Grid.RowDefinitions>
          <TextBlock
            Grid.Column="0"
            Grid.Row="0"
            x:Name="UserConfigFileLabel"
            Padding="0, 5"
            MaxHeight="50"
            TextWrapping="Wrap" />
          <Button
            Grid.Column="1"
            Grid.Row="0"
            Content="Open"
            Margin="5"
            Width="100"
            VerticalAlignment="Top"
            ToolTip="Open user.config"
            Click="ButtonOpenUserConfig" />
      </Grid>
      </GroupBox>

      <StackPanel
        Orientation="Horizontal"
        VerticalAlignment="Bottom"
        HorizontalAlignment="Right">
        <Button
          Content="ListView"
          Margin="5"
          Width="100"
          ToolTip="Demo of list view settings"
          Click="ButtonListView" />
        <Button
          Content="Derived Window"
          Margin="5"
          Width="100"
          ToolTip="Demo of derived window with settings"
          Click="ButtonDerivedWindow" />
        <Button
          Content="XAML Settings"
          Margin="5"
          Width="100"
          ToolTip="Demo of XAML driven settings"
          Click="ButtonXamlSettings" />
        <Button
          Content="Close"
          Margin="5"
          Width="100"
          Click="ButtonClose" />
      </StackPanel>

    </DockPanel>
  </Grid>
</Window>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
Switzerland Switzerland
👨 Senior .NET Software Engineer

🚀 My Open Source Projects
- Time Period Library 👉 GitHub
- Payroll Engine 👉 GitHub

Feedback and contributions are welcome.



Comments and Discussions