我目前正在开发 SilverLight 3 应用程序。我正在使用 MVVM 模式和棱镜。除了以下项目,我一切正常。在我的一个观点中,我必须使用 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");
}
}
如果我在 Setter 上设置一个断点。它永远不会击中它。