You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为代码后台创建的Avalonia控件指定已知名称的绑定属性?

在Avalonia代码后台通过属性名称创建动态绑定的实现方法

要在Avalonia的代码后台为动态创建的控件绑定ViewModel的属性,你需要使用控件的Bind方法,传入目标依赖属性和指定绑定路径的Binding对象,而非直接传递字符串。以下是针对你需求的正确实现:

完整代码示例

// 实例化ViewModel(注意修正拼写错误:IsActivated)
var instanceVM = new TheViewModel { IsActivated = true };

// 创建CheckBox并设置Content
var chkBox = new CheckBox { Content = "Activated" };

// 为IsChecked属性创建绑定,指定ViewModel的属性名
chkBox.Bind(CheckBox.IsCheckedProperty, new Binding("IsActivated"));

// 将CheckBox添加到StackPanel
myStackPanel.Children.Add(chkBox);

// 设置StackPanel的DataContext,让控件继承上下文
myStackPanel.DataContext = instanceVM;

关键说明

  • 调用Bind方法时,第一个参数必须是控件对应的依赖属性(比如CheckBox.IsCheckedProperty,而非你示例中的TextBlock.TextProperty
  • 第二个参数是Binding对象,构造时传入ViewModel的属性名称作为绑定路径
  • 务必保证ViewModel的属性名称拼写正确(你示例里的IsActviated是拼写错误,正确应为IsActivated

可选配置:双向绑定与更新触发

如果需要控件修改后同步更新ViewModel(双向绑定),可以在Binding中指定模式和触发方式:

chkBox.Bind(CheckBox.IsCheckedProperty, new Binding("IsActivated")
{
    Mode = BindingMode.TwoWay,
    UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
});

内容的提问来源于stack exchange,提问作者Eric Eggers

火山引擎 最新活动