В настоящее время я работаю над приложением SilverLight 3. Я использую шаблон и призму MVVM. У меня все работает кроме следующего пункта. В одном из моих представлений я должен использовать 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");
}
}
Если я поставлю точку останова на сеттере. Он никогда не попадает в него.