Mega Code Archive

 
Categories / VB.Net / 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.vb Imports System.Windows Imports System.Collections Imports System.Windows.Media Imports System.Windows.Controls Imports System.Windows.Shapes Namespace WpfApplication1   Public Partial Class DPClearValue     Private Sub RestoreDefaultProperties(sender As Object, e As RoutedEventArgs)       Dim uic As UIElementCollection = myDockPanel.Children       For Each uie As Shape In uic         Dim locallySetProperties As LocalValueEnumerator = uie.GetLocalValueEnumerator()         While locallySetProperties.MoveNext()           Dim propertyToClear As DependencyProperty = DirectCast(locallySetProperties.Current.[Property], DependencyProperty)           If Not propertyToClear.[ReadOnly] Then             uie.ClearValue(propertyToClear)           End If         End While       Next     End Sub     Private Sub MakeEverythingRed(sender As Object, e As RoutedEventArgs)       Dim uic As UIElementCollection = myDockPanel.Children       For Each uie As Shape In uic         uie.Fill = New SolidColorBrush(Colors.Red)       Next     End Sub   End Class End Namespace