以下は、私のモデルViewModel
とxamlバインディングの例です。ビューモデルはを実装しINotifyPropertChanged
ます。私が抱えている問題は...wpfフォームが最初にロードされたときに設定ActiveStock
し、setterとgetterの両方が呼び出され、データを正しく反映するようにuiが更新されたときです。
ただし、後でStockViewModel.ActiveStoc
kを設定すると、FirePropertyChanged
が呼び出されますが、ゲッターが呼び出されていないため、UIが更新されて新しいデータが反映されません。ここで何が起こっているのか考えてみませんか?
私が持っている2番目の質問は、変更されたときにモデル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が変更されたときにコードビハインドでこれら2つのコントロールのDataContextを設定すると、正常に機能します。どうして???