[英]InvalidOperationException - A TwoWay or OneWayToSource binding cannot work on the read-only property
[英]Binding Update of a Read-Only Property in DataTemplate
我有一个 ListBox,它通过依赖属性绑定到ObservableCollection<object>
。 我正在使用DataTemplateSelector
来确定在 ObservableCollection 中找到的基于类类型的对象类型,然后应用适当的 DataTemplate。 任何类类型的多个对象都是可能的。
我的模型类的一部分如下。 它已被编辑以仅显示兴趣点:
public class IPUpdater
{
public IPUpdater()
{
}
public string IPTransceiverInstall { get; set; }
public string IPTransceiverFinal { get; set; }
public Boolean IsFinal { get; set; }
public string IPTransceiver
{
get
{
return IPTransceiverAddress();
}
}
private string IPTransceiverAddress()
{
if (!IsFinal)
return IPTransceiverInstall;
else
return IPTransceiverFinal;
}
}
当使用适当的 IPUpdater 模板时, IPTransceiver
绑定到 XAML DataTemplate 中的 TextBox。 IsFinal
绑定到同一模板中的 CheckBox。
问题:如何强制 TextBox 注册IPTransceiver
已更改? 我想尝试将 DependencyProperty 设置为等于 IPTransceiver,但是如果列表框中有多个类的实例,我不确定最初如何设置它的值。
TwoWay
和OneWayToSource
绑定模式不可用于只读属性。 当 CheckBox 值更改时,我可以验证IsFinal
是否更新。 我什至试图强制IPTransceiverAddress()
在IsFinal
更新时触发。 以上均未导致 TextBox 更新。 我能够让框更新的唯一方法是重复 SQLite 查询,我想避免这种情况。
谢谢!
您希望用作绑定源的任何类都应实现INotifyPropertyChanged
。 您的 ViewModel(以及您的模型,如果您计划将视图直接绑定到它们)应实现此接口并引发PropertyChanged
事件,以便 WPF 绑定引擎在 UI 中反映这些更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.