• WPF:依赖属性的数据绑定


    One of the strengths of WPF is its data binding capabilities. Although data binding is not new (in fact winforms has some limited data binding support) WPF takes it to the next level. In this post I’ll show you how to bind an element to a property defined in the code behind.

    How it’s done?

    In order to bind a property to an element on the control we need to do the following:

    1. Create a dependency property
    2. Name your user control – in XAML
    3. Bind the property to an element of your choice
    Step 1 – Create a dependency property

    Dependency properties are simple .NET properties done the WPF way. On the surface they look just like the properties we use since .NET 1.x came out, underneath they are actually stored in a dictionary like collection and that implementation is what makes WPF work the way it does.

    You don’t need to actually know how dependency properties work in order to create them but if you do want to learn more there is a good overview on MSDN.

    Adding dependency property is done by creating a new field and initializing it usingDependencyProperty.Register and then using that field in the property’s setter and getter:

    public partial class Window1 : Window

    {

    public static DependencyProperty SomeTextProperty =

    DependencyProperty.Register("SomeText", typeof(string), typeof(Window1));

    public string SomeText

        {

    get { return (string)GetValue(SomeTextProperty); }

    set { SetValue(SomeTextProperty, value); }

        }

    Make sure that the name of the property used to register the property is exactly the same as the property name- otherwise it won’t work.

    We’re done with the “code” part – now let’s head to the XAML and create the actual data binding.

    Step 2 – Define the control’s name

    In order to use the property we need to address it and for that we need to define a name for our control. Choose a name and add Name=<user control name> at the beginning of the XAML file. It doesn't matter how you call the control as long as you use the same name in the actual binding.

    Step 3 – Bind the property to an element

    In this trivial example I’ve used the property to set (and get) the text that appears on a textbox – and the XAML should look something like this:

    <Window x:Class="BindToProperty.Window1"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Title="Window1" Height="300" Width="300" Name="UserControlName">

    <Grid>

    <TextBox Name="textBox1" Text="{Binding ElementName=UserControlName,Path=SomeText}"/>

    </Grid>

    </Window>

    And now whenever you change the value of Window1.SomeText that text will be displayed on the textbox “automatically”

  • 相关阅读:
    Microsoft Visual studio2013 在c++中引用本地文件
    二叉树遍历
    二叉搜索树、B树
    01_C语言基础
    Linux网络应用编程之集线器(Packet Tracer仿真)
    Linux网络应用编程之Packet Tracer安装及界面介绍
    Linux网络应用编程之交换机概述
    Linux网络应用编程之VLAN(Packet Tracer仿真)
    ntp服务
    Failed to mount /sysroot如何解决?
  • 原文地址:https://www.cnblogs.com/xpvincent/p/4481312.html
Copyright © 2020-2023  润新知