我目前正在SilverLight 3應用程序上工作。我正在使用MVVM模式和棱鏡。除了下面的項目,我有一切工作。在我的一個觀點中,我必須使用OpenFileDialog。我試圖在ViewModel中這樣做,只是爲了找出SilverLight的安全模型禁止它,因爲它只允許用戶啓動。我已經將OpenFileDialog代碼移到了View的代碼隱藏中。雖然這是我的問題。雖然我已綁定到設置爲TwoWay的源,但它不會觸發ViewModel中屬性的setter。Silverlight MVVM Prism和OpenFileDialog
<Button x:Name="btnUpload" Height="20" Width="122" Canvas.Left="8" Canvas.Top="319" Content="Upload Image" Click="btnUpload_Click" />
Click事件:
<Image x:Name="imgCard" Height="283" Width="463" Canvas.Left="8" Canvas.Top="8" OpacityMask="White" Source="{Binding Path=CardImage, Mode=TwoWay}"/>
按鈕由用戶使用:
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;
}
}
我的視圖模型正在實施INotifyPropertyChanged的,並具有以下
與結合圖像控制的示例屬性。
BitmapSource CardImage
{
get
{
return _imageSource;
}
set
{
_imageSource = value;
NotifyPropertyChanged("CardImage");
}
}
如果我在Setter上放置一個斷點。它從來沒有擊中它。
什麼是您的XAML文件的DataContext? – 2009-07-17 17:56:08
DataContext是ViewModel本身。它由Unity注入。 – cjibo 2009-07-17 18:19:51