В настоящее время я работаю над приложением SilverLight 3. Я использую MVVM Pattern и Prism. У меня все работает, кроме следующего пункта. На одном из моих взглядов я должен использовать OpenFileDialog. Я попытался сделать это в ViewModel только для того, чтобы выяснить, что модель безопасности SilverLight запрещает его, потому что он разрешен только по инициативе пользователя. С тех пор я переместил код OpenFileDialog в код позади View. Вот моя проблема, хотя. Хотя у меня есть привязка к источнику, установленному на 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");
}
}
Если я поставлю точку останова на сеттер. Это никогда не поражает это.