WEB开发网
开发学院WEB开发ASP.NET WPF学习笔记8. Binding 阅读

WPF学习笔记8. Binding

 2010-10-11 16:21:09 来源:本站整理   
核心提示:很显然,这种效果可以让开发人员只关注业务逻辑或者 UI 展示,WPF学习笔记8. Binding(2),大大降低了两者之间的代码关联,我们还可以使用 Binding.Mode 属性来指定绑定变更通知的方向,2. 在 XAML 中使用绑定在 XAML 中我们不能使用 SetBinding,而必须改用扩展标记 Bindin

很显然,这种效果可以让开发人员只关注业务逻辑或者 UI 展示,大大降低了两者之间的代码关联。

我们还可以使用 Binding.Mode 属性来指定绑定变更通知的方向,默认情况下通常是双向绑定。

* OneWay: 对数据源进行修改,会自动更新目标属性。而对目标属性的修改则不会影响源对象。

* TwoWay: 无论是修改数据源还是目标属性,都会自动更新另一方。

* OneWayToSource: 和 OneWay 相反,当修改目标属性时会自动更新数据源,反之则不然。

* OneTime: 仅在初始化时修改目标属性。

data = new MyData();
var binding = new Binding("Name") { Source = data, Mode = BindingMode.OneWay };
this.textbox1.SetBinding(TextBox.TextProperty, binding);

System.Windows.Data.BindingOperations 类提供了绑定所需的全部的操作方法。和 FrameworkElement.SetBinding() 相比,BindingOperations.SetBinding 方法可能更通用些,因为它可以直接使用 DependencyObject 对象。

public BindingExpression FrameworkElement.SetBinding(DependencyProperty dp, BindingBase binding)
public static BindingExpressionBase BindingOperations.SetBinding(DependencyObject target,
  DependencyProperty dp, BindingBase binding)

将上面例子改成 BindingOperations 试试。

BindingOperations.SetBinding(this.textbox1, TextBox.TextProperty, new Binding("Name") { Source = data });

我们可以用 ClearBinding 方法解除绑定。

private void buttonClick(object sender, RoutedEventArgs e)
{
  if (sender == btnSet)
    data.Name = DateTime.Now.ToString();
  else if (sender == btnClear)
    BindingOperations.ClearBinding(this.textbox1, TextBox.TextProperty);
  else
    MessageBox.Show(data.Name);
}

单击 btnClear 后,你会发现绑定自动变更失效。

2. 在 XAML 中使用绑定

在 XAML 中我们不能使用 SetBinding,而必须改用扩展标记 Binding (注意没有 Extension 后缀)。该扩展标记可将目标属性绑定到静态资源(StaticResource)或者其他XAML元素(包括目标元素自身)上。

(1) 绑定到其他元素

<Window x:Class="Learn.WPF.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="Window1">
  <Grid>
    <StackPanel>
      <TextBox x:Name="textbox1" />
      <Label x:Name="label1" Content="{Binding ElementName=textbox1, Path=Text}" />
    </StackPanel>
  </Grid>
</Window>

上一页  1 2 3 4  下一页

Tags:WPF 学习 笔记

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接