Click here to Skip to main content
15,885,127 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 542K   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