DataTemplate中只读属性的绑定更新

问题描述 投票:0回答:1

我有一个通过依赖项属性绑定到ObservableCollection<object>的ListBox。我正在使用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。

问题:如何强制文本框注册IPTransceiver已更改?我曾考虑过尝试将DependencyProperty设置为IPTransceiver,但是如果列表框中有多个该类的实例,我不确定如何初始设置它的值。

TwoWayOneWayToSource绑定模式不适用于只读属性。当CheckBox值更改时,我可以验证IsFinal是否更新。我什至试图强迫IPTransceiverAddress()IsFinal更新时触发。以上都不是导致TextBox更新的原因。我能够更新框的唯一方法是重复执行SQLite查询,这是我想避免的。

谢谢!

c# xaml data-binding dependency-properties
1个回答
1
投票

您希望用作绑定源的任何类都应实现INotifyPropertyChanged。您的ViewModels(以及模型,如果您打算直接将View绑定到它们)也应该实现此接口并引发PropertyChanged事件,以便WPF绑定引擎在UI中反映这些更改。

© www.soinside.com 2019 - 2024. All rights reserved.