У меня есть привязка twoway, которая работает на одной странице. Я покажу, как данные попадают туда, включая код декларации (не полный).WPF - привязка TwoWay к изображению
<Page.Resources>
<local:myViewModel x:Key="myList" />
</Page.Resources>
<ListView x:Name="mylvw"
DataContext="{StaticResource ResourceKey=myList}"
ItemsSource="{Binding Path=myItems}"
<Image DataContext ="{Binding SelectedItem,
ElementName=lvw,
Mode=TwoWay}"
Source="{Binding Path=myImage}" />
Так я нажимаю на элемент в ListView и заселяет изображение с сохраненным изображением, и я могу изменить изображение, используя TwoWay привязку.
У моей проблемной страницы есть другая настройка. Я хочу показать выбранный элемент списка (ViewModel) в новом окне. Я вызываю окно от команды в ViewModel и установка DataContext для окна там:
class myViewModel: INotifyPropertyChanged
{
public ICommand OpenDetailsCommand
{
get { return new RelayCommand(OpenDetailsWindow); }
}
public void OpenDetailsWindow()
{
myWindow w = new myWindow();
w.DataContext = this;
w.Show();
}
Так у меня нет ресурса в этом окне есть Window.Resource
Мое изображение выглядит следующим образом:
<Image x:Name="myImage"
Source="{Binding Path=myImage}"/>
Это изображение, но я не могу использовать привязку для изменения изображения при редактировании. Если я стараюсь:
<Image x:Name="myImg"
Source="{Binding Path=myImage, Mode=TwoWay}"/>
Связывание не работает вообще ... нет изображения отображаются. Так я устал, чтобы указать TwoWay в DataContext следующим образом:
<Image x:Name="myImg"
DataContext="{Binding myImage, RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}}, TwoWay}"
Source="{Binding Path=myImage}"/>
Я попытался это как способ репликации, который работает. Это также не связывает вообще, то есть изображение не отображается.
Поэтому у меня есть 3 вопроса
Как я могу получить изображение, чтобы привязать к окнам DataContext в режиме TwoWay.
Я делаю это все неправильно с самого начала, установив Datacontext в ViewModel?
Есть ли лучший способ пропускать ViewModels из окна/страницы в окно/страницу?
Спасибо в ожидании.
Если я не ошибаюсь, использование режима «TwoWay» для большого «изображения» в этом случае может быть проблемой с производительностью. –