【MVVM】【Prism】バインドしたBitmapImageを更新しても画像が更新されない
実現したい内容は簡単で、画像をクリックするとダイアログが開き、指定した画像に切り替わる。というものです。
XAML
<Image x:Name="TestImage" Source="{Binding testImage}" Width="100" Height="50"> <i:Interaction.Triggers> <i:EventTrigger EventName="MouseLeftButtonDown"> <prism:InvokeCommandAction Command="{ Binding ImageChange}"/> </i:EventTrigger> </i:Interaction.Triggers> </Image>
C#(ViewModel)
public BitmapImage testImage { get; set; } public MainWindowViewModel() { testImage = new BitmapImage(new Uri("sample.png")); // 初期画像 } private DelegateCommand<EventArgs> _ImageChange; public DelegateCommand<EventArgs> ImageChange => _ImageChange ?? (_ImageChange = new DelegateCommand<EventArgs>(ExecuteCommandName, CanExecuteCommandName)); void ExecuteCommandName(EventArgs parameter) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "画像|*.jpg;*.jpeg;*.png;*.bmp"; if (openFileDialog.ShowDialog() == true) { string path = openFileDialog.FileName; testImage = new BitmapImage(new Uri(path)); } } bool CanExecuteCommandName(EventArgs parameter) { return true; }
試したこと
ダイアログが開く所までは確認しています。
更新通知が出ていないのかと思い、BitmapImageとstringを持ったクラスを作成して、それらをバインドした
コントロールを複数設置して、文字列を入力したところ相互に更新されましたので、バインドや更新通知はできているようなのですが・・・
どうやら初期表示時に画像を表示したら、それ以降は画像が切り替わらなくなっている模様です。
個人的に原因はSourceに反映できていないことだと思います。
これが、更新通知が出せていないのか、更新通知が出ても画像は更新されないのか。。。ここで詰まっています。
当然ですが、イベントハンドラを作成してView側でSourceを変更すると切り替わります。
環境
VisualStudio2019
Prism.Unity v7.2.0.1422
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/09 15:57