Programmatically Extract an Element's Style with DefaultStyleKeyProperty : UI Element « Windows Presentation Foundation « VB.Net

Home
VB.Net
1.2D
2.Application
3.Class
4.Data Structure
5.Data Types
6.Database ADO.net
7.Date Time
8.Development
9.Event
10.File Directory
11.Generics
12.GUI
13.Internationalization I18N
14.Language Basics
15.LINQ
16.Network Remote
17.Reflection
18.Security
19.Thread
20.Windows Presentation Foundation
21.Windows System
22.XML
23.XML LINQ
VB.Net » Windows Presentation Foundation » UI ElementScreenshots 
Programmatically Extract an Element's Style with DefaultStyleKeyProperty
Programmatically Extract an Element's Style with DefaultStyleKeyProperty
     

<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" Height="120" Width="220">
    <Window.Resources>
        <Style x:Key="CustomProgressBarStyle" TargetType="{x:Type ProgressBar}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ProgressBar}">
                        <Grid>
                            <Border Name="PART_Track" Background="{DynamicResource {x:Static SystemColors.InactiveCaptionBrushKey}}"                          
                            BorderBrush="{DynamicResource {x:Static SystemColors.InactiveBorderBrushKey}}"                          
                            BorderThickness="1" />
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    </Window.Resources>

    <StackPanel>
        <ProgressBar x:Name="MyProgressBar" Value="30" Width="200" HorizontalAlignment="Center" Style="{DynamicResource CustomProgressBarStyle}"/>
        <Button Click="Button_Click" Content="Extract Style"/>
    </StackPanel>

</Window>

//File:Window.xaml.vb

Imports System
Imports System.Reflection
Imports System.Windows
Imports System.Windows.Markup

Namespace WpfApplication1
  Public Partial Class Window1
    Inherits Window
    Public Sub New()
      InitializeComponent()
    End Sub

    Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
      Dim type As Type = GetType(FrameworkElement)
      Dim fieldInfo As FieldInfo = type.GetField("DefaultStyleKeyProperty", BindingFlags.[StaticOr BindingFlags.NonPublic)

      Dim defaultStyleKeyProperty As DependencyProperty = DirectCast(fieldInfo.GetValue(MyProgressBar), DependencyProperty)

      Dim defaultStyleKey As Object = MyProgressBar.GetValue(defaultStyleKeyProperty)
      Dim style As Style = DirectCast(Application.Current.FindResource(defaultStyleKey), Style)
      Dim styleXaml As String = XamlWriter.Save(style)
      Console.WriteLine(styleXaml)
    End Sub
  End Class
End Namespace

   
    
    
    
    
  
Related examples in the same category
1.Find enclosure componentFind enclosure component
2.Clear locally set values and restore the default values of dependency propertiesClear locally set values and restore the default values of dependency properties
3.PresentationTraceSources.SetTraceLevel(binding,PresentationTraceLevel.High);PresentationTraceSources.SetTraceLevel(binding,PresentationTraceLevel.High);
4.UI Element Mouse Clicked EventsUI Element Mouse Clicked Events
5.Print Logical TreePrint Logical Tree
6.Print Visual TreePrint Visual Tree
7.About Dialog with Tree WalkingAbout Dialog with Tree Walking
8.Changing graphical elementsChanging graphical elements
9.UIElement CountUIElement Count
10.Use Linq to get control from a containerUse Linq to get control from a container
11.Find inner visual elementFind inner visual element
12.Logical Visual Tree SampleLogical Visual Tree Sample
13.Point Hit Test with VisualTreeHelper.HitTestPoint Hit Test with VisualTreeHelper.HitTest
14.Change the Visibility property of a UIElement.Change the Visibility property of a UIElement.
15.Mixing graphics with Control ElementsMixing graphics with Control Elements
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.