下面是我的模型ViewModel
和 xaml 绑定的示例。视图模型实现INotifyPropertChanged
. 我遇到的问题是...当 wpf 表单第一次加载我设置时ActiveStock
,我看到 setter 和 getter 都被调用并且 ui 被更新以正确反映数据。
但是,当我稍后设置StockViewModel.ActiveStoc
k 时,FirePropertyChanged
会调用但我没有看到 getter 被调用,因此 UI 不会更新以反映新数据。有什么想法可能在这里发生吗?
我的第二个问题是我是否还需要在更改时为模型PropertyChanged
的子属性(PriceData
和CompanyData
)提出ViewModel.ActiveStock
?
public class Stock
{
public string Ticker { get; set; }
public StockData PriceData { get; set; }
public StockData CompanyData { get; set; }
}
public class StockData
{
...
}
public class StockViewModel:INotifyPropertyChanged
{
private Stock _activeStock;
public Stock ActiveStock
{
get{ return _activeStock;}
set{ _activeStock = value; FirePropertyChanged("ActiveStock");}
}
...
}
XAML:
<UserControl Template="{StaticResource StockTemplate}" DataContext="{Binding ActiveStock}" Tag="{Binding PriceData}" />
<UserControl Template="{StaticResource StockTemplate}" DataContext="{Binding ActiveStock}" Tag="{Binding CompanyData}" />
编辑:如果我删除 UserControl 的 DataContext 绑定,而是在 ActiveStock 更改时在代码中为这两个控件设置 DataContext,它工作正常。为什么???