何かをテストしたかったので、ボタンとリストボックスを備えた小さなビューとビューモデルを作成しました。ボタンをクリックすると、以下のコードのように RunCommand を実行します。Dispatcher が実行したいアクションを起動しない理由がわかりません。
ビューモデルのコードは次のとおりです。
public class ViewModel
{
private ObservableCollection<string> _items = new ObservableCollection<string>();
private ICommand _runCommand;
public ICommand RunCommand { get { return _runCommand ?? (_runCommand = new ActionCommand(RunCommandAction)); } }
private void RunCommandAction()
{
Task.Factory.StartNew(() =>
{
if (Thread.CurrentThread == EnvironmentData.UIThread)
_items.Add("Eldad");
else
Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() => _items.Add("Eldad")));
});
}
public IEnumerable<string> Items
{
get { return _items; }
}
public ViewModel()
{
_items.Add("Shahar");
}
}
どんなアイデアも素晴らしいでしょう
ありがとう