MVVM 아키텍처를 사용할 때 큰 문제가 발생했습니다. 직접적으로 언급하거나 언급하지는 않았습니다. 멀티 스레드 응용 프로그램에서는 뷰 모델이 완전히 구성되기 전에 뷰에서 데이터 바인딩을 시작하여 바인딩 실패를 만들 수 있습니다. 뷰 모델이 구축 된 후 데이터 바인딩이 수행되도록하려면 어떻게해야합니까?
public class StocksViewModel
{
// blah blah
public IOrderedEnumerable<KeyValuePair<string, string>> AvailableStocks
{
get
{
// This could take a minute or two
return StockService.GetAvailableStocks(User);
}
}
public double Quantity
{
get => Quantity;
set
{
Quantity = value; RaisePropertyChanged(nameof(Quantity));
}
}
public double Symbol
{
get => Symbol;
set
{
Symbol = value; RaisePropertyChanged(nameof(Symbol));
}
}
}
여기 theXAML입니다 : 당신이 볼 수 있듯이
<ComboBox x:Name="Quantity" Grid.ColumnSpan="2" Grid.Column="2" SelectedValue="{x:Bind Mode=TwoWay, Path=ViewModel.Quantity}" DisplayMemberPath="Value" SelectedValuePath="Key" ItemsSource="{x:Bind ViewModel.AvailableStocks}" />
<ComboBox x:Name="Symbol" Grid.ColumnSpan="2" Grid.Column="2" SelectedValue="{x:Bind Mode=TwoWay, Path=ViewModel.Symbol}" DisplayMemberPath="Value" SelectedValuePath="Key" ItemsSource="{x:Bind ViewModel.AvailableStocks}" />
하면, 데이터 바인딩은 예측할 수 없습니다
여기가 예입니다. StockService에 몇 초가 걸리면 Quantity 및 Symbol은 AvailableStock에 데이터 바인딩 할 기회를 얻지 못합니다.
이 상황을 처리하기위한 규정 된 방법은 무엇입니까?
Quantity와 Symbol은 AvailableStocks 속성과 어떻게 관련이 있습니까? Quantity 및 Symbol 속성에 대한 바인딩은 속성이 설정 될 때마다 새로 고쳐지기 때문에 실제로 사용자의 문제를 이해하지 못합니다. – mm8