2,000 Things You Should Know About WPF

Everything a WPF Developer Needs to Know, in Bite-Sized Chunks

  • Home
  • About
  • Index
Posts Comments
  • Controls
  • Layout
  • Events
  • Basics
  • Blend
  • Graphics
  • XAML
  • Miscellaneous
  • Dependency Properties
  • Visual Studio

#166 – You Can Override Metadata for Any Dependency Property

December 25, 2010 1 Comment

Recall that you can set a dependency property value on a DependencyObject for any dependency property, not just the properties that the class implements or inherits.

Since any dependency property can be attached to any dependency object, you can override metadata for any dependency property in a class.

Here’s an example where we override the Grid.Row and Grid.Column properties in a class that derives from Button.  If this ButtonLoner object is defined in a Grid in XAML, it will automatically appear in Row 1, Col 1, rather than Row 0, Col 0.

    public class ButtonLoner : Button
    {
        static ButtonLoner()
        {
            Grid.RowProperty.OverrideMetadata(typeof(ButtonLoner), new FrameworkPropertyMetadata(1));
            Grid.ColumnProperty.OverrideMetadata(typeof(ButtonLoner), new FrameworkPropertyMetadata(1));
        }
    }

Here’s an example of the button being used:

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <app:ButtonLoner x:Name="btnLoner" Content="Loner" Width="100" Height="25"/>
    </Grid>

Advertisement

Filed under Dependency Properties Tagged with Attached Properties, Dependency Properties, OverrideMetadata, WPF

Sean Sexton

Recent Posts

  • #1,219 – Expanding All Nodes in a TreeView by Default
  • #1,218 – Stretching Items in TreeView across Entire Control
  • #1,217 – Using Multiple HierarchicalDataTemplates in a TreeView
  • #1,216 – Creating a Custom ItemTemplate in a TreeView
  • #1,215 – Binding a TreeView to a Hierarchical Data Source

Blogroll

  • 2,000 Things You Should Know About C#
  • Britannica Geek
  • Sean on Twitter
  • Sean's Stuff

Calendar

December 2010
S M T W T F S
 1234
567891011
12131415161718
19202122232425
262728293031  
« Nov   Jan »

Top Posts

  • #220 - Using the Predefined Colors
  • #210 - Specifying Colors in XAML As RGB Values
  • #588 - If You Handle PreviewKeyDown Event, KeyDown Won't Fire
  • #351 - Binding a CheckBox's IsChecked Property to a Boolean Variable
  • #1,107 - Accessing an Embedded Resource Using a Uri
  • #556 - Clipping to a Border Using an Opacity Mask
  • #400 - Using a WrapPanel as the Items Panel for a ListBox
  • #1,062 - Scaling a Canvas Using a ViewBox
  • #891 - Changing the Border of a GroupBox
  • #1,204 - Using a DataTrigger to Change Content in a ContentPresenter

Tags

Application Background Basics Binding Blend Border Brush Button Calendar Canvas CheckBox Color Colors ComboBox Commands ContentControl Controls Cursor Data Binding Dependency Properties Dependency property DockPanel Drag-and-Drop Events Expander FlowDocument Focus Fonts FrameworkElement Gradient Graphics Grid GridSplitter GroupBox HorizontalAlignment Image InkCanvas Input ItemsControl Keyboard Keyboard Focus KeyDown KeyUp Layout LinearGradientBrush ListBox Localization Manipulation Margin Measure Miscellaneous Mouse Panel Popup Radial Gradient Resources Routed Events ScrollViewer Shape Slider StackPanel TabControl Text TextBlock TextBox Tooltip Touch Input Transforms UIElement Visual Studio Window Windows WPF WrapPanel XAML

Blog Stats

  • 5,176,873 hits

Create a free website or blog at WordPress.com.

Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy
  • Follow Following
    • 2,000 Things You Should Know About WPF
    • Join 290 other followers
    • Already have a WordPress.com account? Log in now.
    • 2,000 Things You Should Know About WPF
    • Customize
    • Follow Following
    • Sign up
    • Log in
    • Report this content
    • View site in Reader
    • Manage subscriptions
    • Collapse this bar
 

Loading Comments...