如何从代码中绑定
在Avalonia中,从代码中绑定与WPF/UWP中的方式有些不同。在底层,Avalonia的绑定系统基于Reactive Extensions的 IObservable,然后由XAML绑定进行构建(这些绑定也可以在代码中实例化)。
订阅属性的更改
您可以通过调用 GetObservable 方法来订阅属性的更改。这将返回一个 IObservable<T>,可用于监听属性的更改:
var textBlock = new TextBlock();
var text = textBlock.GetObservable(TextBlock.TextProperty);
每个可订阅的属性都有一个静态只读字段,称为 [PropertyName]Property,该字段在 GetObservable 中传递以订阅属性的更改。
IObservable(是Reactive Extensions的一部分,简称为rx)超出了本指南的范围,但以下是一个示例,该示例使用返回的可观察对象将更改的属性值打印到控制台:
var textBlock = new TextBlock();
var text = textBlock.GetObservable(TextBlock.TextProperty);
text.Subscribe(value => Console.WriteLine(value + " Changed"));
当订阅返回的可观察对象时,它将立即返回属性的当前值,然后在每次属性更改时推送一个新值。如果您不想要当前值,可以使用 rx 的 Skip 运算符:
var text = textBlock.GetObservable(TextBlock.TextProperty).Skip(1);