私は現在SilverLight 3アプリケーションを開発中です。 MVVM PatternとPrismを使用しています。私は以下の項目を除いてすべてが働いています。私の意見の1つでは、OpenFileDialogを使用する必要があります。私はViewModelでこれをやろうとしましたが、SilverLightのセキュリティモデルは、ユーザーが開始することだけが許可されているため、SilverLightのセキュリティモデルを禁止しています。私はその後、OpenFileDialogコードをビューのコードビハインドに移動しました。私の問題はここにあります。私はTwoWayに設定されたソースにバインドしていますが、ViewModelのプロパティのセッターに当たっていません。バインディングとImageコントロールのSilverlight MVVM PrismとOpenFileDialog
例:ユーザが使用
<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" />
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");
}
}
私はセッターにブレークポイントを設定します。それは決してそれを打つことはありません。
XAMLファイルのDataContextとは何ですか? –
DataContextはViewModel自体です。 Unityによって注入されます。 – cjibo