zoukankan      html  css  js  c++  java
  • 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”

  • 相关阅读:
    [转]android刷新后R.java不见了
    adb常用指令
    [转]Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
    effective c/C++
    七种布局显示方式效果及实现
    修改Tabhost样式和字体大小的方法
    [转]android中SoundRecorder
    java中的IO整理
    在xp下面下载Android源代码
    linux网络 (二):无线网络操作
  • 原文地址:https://www.cnblogs.com/xpvincent/p/4481312.html
Copyright © 2011-2022 走看看