Я использую в своем представлении в элементе управления изображениями отображение моей веб-камеры в CS-файле представления. Я использовал EmguCV с фоновым рабочим для выборки каждого кадра и вставки его в Image.source, и он работал отлично.
Теперь я пытаюсь сделать это с привязкой через ViewModel, но источник Image.Source никогда не обновляется.
View:
<Image x:Name="imgVideo" Canvas.Left="0" Canvas.Top="0" Stretch="Fill" Source="{Binding Path=ImageSource}" Width="400" Height="266" />
ViewModel (соответствующие части):
using System.Windows.Media;
ImageSource imageSource;
public ImageSource ImageSource
{
get { return imageSource; }
set
{
imageSource = value;
this.RaisePropertyChanged("ImageSource");
}
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
Image<Bgr, Byte> currentFrame = m_capture.QueryFrame();
...
e.Result = currentFrame ;
}
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Image<Bgr, Byte> result = e.Result as Image<Bgr, Byte>;
BitmapSource bitmapSource = ToBitmapSource(result);
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
MemoryStream memoryStream = new MemoryStream();
encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
encoder.Save(memoryStream);
var source = new BitmapImage();
source.BeginInit();
source.StreamSource = new MemoryStream(memoryStream.ToArray());
source.EndInit();
memoryStream.Close();
ImageSource = source;
result.Dispose();
}
любая помощь будет высоко оценена, спасибо.