Mega Code Archive

 
Categories / C# / WPF
 

Clear locally set values and restore the default values of dependency properties

<StackPanel Name="root"   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   x:Class="WpfApplication1.DPClearValue">     <StackPanel.Resources>       <Style TargetType="Button">         <Setter Property="Height" Value="20"/>         <Setter Property="Width" Value="250"/>         <Setter Property="HorizontalAlignment" Value="Left"/>       </Style>       <Style TargetType="Ellipse">         <Setter Property="Height" Value="50"/>         <Setter Property="Width" Value="50"/>         <Setter Property="Fill" Value="Black"/>       </Style>       <Style TargetType="Rectangle">         <Setter Property="Height" Value="50"/>         <Setter Property="Width" Value="50"/>         <Setter Property="Fill" Value="Blue"/>       </Style>       <Style TargetType="Polygon">         <Setter Property="Points" Value="10,60 60,60 60,10"/>         <Setter Property="Fill" Value="Blue"/>       </Style>       <Style x:Key="ShapeStyle" TargetType="Shape">         <Setter Property="Fill" Value="Red"/>       </Style>     </StackPanel.Resources>   <DockPanel Name="myDockPanel">     <Ellipse Height="100"  Width="100" Style="{StaticResource ShapeStyle}"/>     <Rectangle Height="100" Width="100"  Style="{StaticResource ShapeStyle}" />     <Polygon Points="10,110 110,110 110,10" Style="{StaticResource ShapeStyle}"/>   </DockPanel>     <Button Name="RedButton" Click="MakeEverythingRed">Make everything red</Button>     <Button Name="ClearButton" Click="RestoreDefaultProperties">   Clear local values   </Button> </StackPanel> //File:Window.xaml.cs using System.Windows; using System.Collections; using System.Windows.Media; using System.Windows.Controls; using System.Windows.Shapes; namespace WpfApplication1 {     public partial class DPClearValue {         void RestoreDefaultProperties(object sender, RoutedEventArgs e)         {             UIElementCollection uic = myDockPanel.Children;             foreach (Shape uie in uic)             {                 LocalValueEnumerator locallySetProperties = uie.GetLocalValueEnumerator();                 while (locallySetProperties.MoveNext())                 {                     DependencyProperty propertyToClear = (DependencyProperty)locallySetProperties.Current.Property;                     if (!propertyToClear.ReadOnly) { uie.ClearValue(propertyToClear); }                 }             }         }         void MakeEverythingRed(object sender, RoutedEventArgs e)         {             UIElementCollection uic = myDockPanel.Children;             foreach (Shape uie in uic) {uie.Fill = new SolidColorBrush(Colors.Red);}         }     } }