【发布时间】:2011-04-04 18:16:02
【问题描述】:
我有 DiscoveredHosts,它是一个 ObservableCollection<string>。未调用 sourceupdated 事件。有人知道为什么吗?
<ComboBox Name="DiscoveredHostsComboBox" VerticalAlignment="Center" Grid.Column="0"
HorizontalAlignment="Center" MinWidth="100px" ItemsSource="{Binding Path=
DiscoveredHosts}" SourceUpdated="DiscoveredHostsComboBox_SourceUpdated" />
public void GetDomainHosts()
{
DiscoveredHosts.Clear();
var adapters = NetworkInterface.GetAllNetworkInterfaces();
if (Config.Debug)
{
DiscoveredHosts.Add("192.168.73.11");
DiscoveredHosts.Add("192.168.73.14");
}
foreach (var properties in adapters.Select(adapter => adapter.GetIPProperties()))
{
if (properties.DnsSuffix != "" && !DiscoveredHosts.Contains(
properties.DnsSuffix))
DiscoveredHosts.Add(properties.DnsSuffix);
if (properties.DnsAddresses.Count <= 0) continue;
foreach (var host in properties.DnsAddresses.Where(host => !DiscoveredHosts.
Any(a => a == host.ToString())))
DiscoveredHosts.Add(host.ToString());
}
OnPropertyChanged("DiscoveredHosts");
}
【问题讨论】:
-
我不明白:OnPropertyChanged("DiscoveredHosts");可以添加 DiscoveredHosts 属性的声明吗?我认为使用 ObservableCollection 的想法是避免“手动”调用 OnPropertyChange 方法。 IMO 看起来有些不正确。
-
哦,是的。我知道这就是你使用 ObservableCollection 的原因;然而,有人向我提出质疑,说这可能不会发生,我已经考虑过同样的问题。我把那条线留在这里,所以没有人会说,“你为什么不试试……”哈哈。 public ObservableCollection
DiscoveredHosts { get { return _discoveredHosts ?? (_discoveredHosts = new ObservableCollection ()); } }