Programmatically Extract an Element's Style with DefaultStyleKeyProperty : Key Event « Windows Presentation Foundation « C# / C Sharp

Home
C# / C Sharp
1.2D Graphics
2.Class Interface
3.Collections Data Structure
4.Components
5.Data Types
6.Database ADO.net
7.Date Time
8.Design Patterns
9.Development Class
10.Event
11.File Stream
12.Generics
13.GUI Windows Form
14.Internationalization I18N
15.Language Basics
16.LINQ
17.Network
18.Office
19.Reflection
20.Regular Expressions
21.Security
22.Services Event
23.Thread
24.Web Services
25.Windows
26.Windows Presentation Foundation
27.XML
28.XML LINQ
C# / C Sharp » Windows Presentation Foundation » Key Event 




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.cs

using System;
using System.Reflection;
using System.Windows;
using System.Windows.Markup;

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Type type = typeof(FrameworkElement);
            FieldInfo fieldInfo = type.GetField("DefaultStyleKeyProperty",BindingFlags.Static| BindingFlags.NonPublic);

            DependencyProperty defaultStyleKeyProperty =(DependencyProperty)fieldInfo.GetValue(MyProgressBar);

            object defaultStyleKey = MyProgressBar.GetValue(defaultStyleKeyProperty);
            Style style = (Style)Application.Current.FindResource(defaultStyleKey);
            string styleXaml = XamlWriter.Save(style);
            Console.WriteLine(styleXaml);
        }
    }
}

   
    
  














Related examples in the same category
1.Query Left / Right control keyQuery Left / Right control key
2.Query Left / Right Shift keyQuery Left / Right Shift key
3.Is Key.CapsLock ToggledIs Key.CapsLock Toggled
4.Keyboard.IsKeyToggledKeyboard.IsKeyToggled
5.Query Number lock keyQuery Number lock key
6.Use Keyboard.Focus to set the focus to a Text FieldUse Keyboard.Focus to set the focus to a Text Field
7.Provide Quick Keyboard Access to ButtonsProvide Quick Keyboard Access to Buttons
8.Reading keyboard modifiersReading keyboard modifiers
9.Reading individual key state with Keyboard.IsKeyDownReading individual key state with Keyboard.IsKeyDown
10.Suppress Keyboard and Mouse EventsSuppress Keyboard and Mouse Events
11.Use KeyBinding to bind Key event to TextBox.InputBindingsUse KeyBinding to bind Key event to TextBox.InputBindings
12.StackPanel PreviewTextInput and PreviewKeyDownStackPanel PreviewTextInput and PreviewKeyDown
13.If input is not a number do not handle the key eventIf input is not a number do not handle the key event
14.On Key Down HandlerOn Key Down Handler
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.