2. WPF DataBinding--绑定声明
  JWGppPCsR1pT 2023年11月15日 38 0

参考文档:Binding declarations overview - WPF .NET | Microsoft Learn

在XAML中声明绑定

Binding是一个拓展标记,用它来声明一个绑定,声明表达式由一系列的从子句组成 -- 它们跟在Binding关键字的后面,并用','隔开. 子句的位置是任意的,它们有很多种组合。子句'Name=Value',Name是Binding的属性,Value是设置给属性的值。

在标记中创建绑定声明字符串时,必须将它附加到目标对象的依赖属性,以下是一个绑定到TextBox.Text的绑定表达式

<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=Name}"/>

更多关于Binding拓展标记请查看: Binding Markup Extension - WPF .NET Framework | Microsoft Learn

对象元素语法

对象元素语法是创建绑定声明的另一种选择。多数情况下使用标记拓展或元素对象的语法并没有特别的优势。但是当属性值不是字符串,也不存在类型转换,此时你需要用到对象元素语法:

<TextBlock>
    <TextBlock.Text>
        <Binding Source="{StaticResource myDataSource}" Path="Name"/>
    </TextBlock.Text>
</TextBlock>

MultiBinding 和 PriorityBinding

MultiBindingPriorityBinding不支持XAML拓展语法,如果在XAML中声明它们,就必须使用对象元素语法。

在代码中创建绑定

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // Make a new data source object
    var personDetails = new Person()
    {
        Name = "John",
        Birthdate = DateTime.Parse("2001-02-03")
    };

    // New binding object using the path of 'Name' for whatever source object is used
    var nameBindingObject = new Binding("Name");

    // Configure the binding
    nameBindingObject.Mode = BindingMode.OneWay;
    nameBindingObject.Source = personDetails;
    nameBindingObject.Converter = NameConverter.Instance;
    nameBindingObject.ConverterCulture = new CultureInfo("en-US");

    // Set the binding to a target object. The TextBlock.Name property on the NameBlock UI element
    BindingOperations.SetBinding(NameBlock, TextBlock.TextProperty, nameBindingObject);
    // NameBlock.Setinding()
}

绑定路径语法

使用Path属性指定绑定源:

  • 最简单的情况,Path=PropertyName
  • 使用子属性,Path=ShoppingCar.Order
  • 使用索引器,Path=ShoppingCart[0]
  • 多索引器,Path="[(sys:Int32)42,(sys:Int32)24], (类型)值
  • 如果源是集合,Path=/表示当前项
  • Path=/Offices/ManagerName 集合的当前值.Offices的当前值.ManagerName
  • Path=. 相当于 "{Binding}"

转义机制

在索引器([])中,插入字符(^)转义下一个字符

Binding declarations overview - WPF .NET | Microsoft Learn

绑定方向

Binding declarations overview - WPF .NET | Microsoft Learn



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
JWGppPCsR1pT