現在、SilverLight 3 アプリケーションに取り組んでいます。MVVM パターンとプリズムを使用しています。次の項目を除いて、すべてが機能しています。私のビューの 1 つで、OpenFileDialog を使用する必要があります。ViewModel でこれを実行しようとしたのは、SilverLight のセキュリティ モデルがそれを禁止していることを確認するためだけでした。それ以来、OpenFileDialog コードをビューのコード ビハインドに移動しました。ここに私の問題があります。TwoWay に設定されたソースにバインドしていますが、ViewModel のプロパティのセッターにヒットしていません。
バインディングを使用したイメージ コントロールの例:
<Image x:Name="imgCard" Height="283" Width="463" Canvas.Left="8" Canvas.Top="8" OpacityMask="White" Source="{Binding Path=CardImage, Mode=TwoWay}"/>
ユーザーが使用するボタン:
<Button x:Name="btnUpload" Height="20" Width="122" Canvas.Left="8" Canvas.Top="319" Content="Upload Image" Click="btnUpload_Click" />
クリックイベント:
private void btnUpload_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "PNG Files(*.png)|*.png";
ofd.ShowDialog();
using (Stream stream = ofd.File.OpenRead())
{
BitmapImage image = new BitmapImage();
image.SetSource(stream);
imgCard.Source = image;
}
}
私のViewModelはINotifyPropertyChangedを実装しており、次のプロパティがあります。
BitmapSource CardImage
{
get
{
return _imageSource;
}
set
{
_imageSource = value;
NotifyPropertyChanged("CardImage");
}
}
セッターにブレークポイントを置いたら。それは決して当たらない。