WPF-图像的双向绑定

WPF-图像的双向绑定,wpf,mvvm,Wpf,Mvvm,我有一个在一页上工作的双向绑定。我将通过包含声明代码(不完整)来说明数据是如何到达那里的 所以我在这个窗口中没有资源,即窗口资源 我的形象如下: <Image x:Name="myImage" Source="{Binding Path=myImage}"/> 这显示了图像,但我无法使用绑定在编辑时更改图像。 如果我尝试: <Image x:Name="myImg" Source="{Binding Path=myImage, Mode=T

我有一个在一页上工作的双向绑定。我将通过包含声明代码(不完整)来说明数据是如何到达那里的

所以我在这个窗口中没有资源,即窗口资源

我的形象如下:

<Image x:Name="myImage" 
       Source="{Binding Path=myImage}"/>

这显示了图像,但我无法使用绑定在编辑时更改图像。 如果我尝试:

<Image x:Name="myImg" 
       Source="{Binding Path=myImage, Mode=TwoWay}"/>

绑定根本不起作用。。。没有显示图像。 因此,我尝试通过以下方式在Datacontext中指定双向:

<Image x:Name="myImg"
       DataContext="{Binding myImage, RelativeSource={RelativeSource FindAncestor, 
       AncestorType={x:Type Window}}, TwoWay}"
       Source="{Binding Path=myImage}"/>

我试着用这个来复制一个有效的方法。这也完全不绑定,即不显示图像

所以我有三个问题

  • 如何使映像以双向模式绑定到windows datacontext

  • 通过在 视图模型

  • 有没有更好的方法将ViewModels从窗口/页面传递到窗口/页面


  • 谢谢您的期待。

    您的代码问题在于视图模型中您没有任何属性
    myImage
    ,您已在新窗口中将
    图像
    绑定到该属性。因此,为了使绑定工作正常,请在
    viewmodel
    上创建一个属性,如
    SelectedItem
    ,该属性属于
    itemslist
    中的项目类型,并将
    listview
    绑定到它,如下所示:

    <ListView x:Name="mylvw" 
              DataContext="{StaticResource ResourceKey=myList}"
              ItemsSource="{Binding Path=myItems}"
    SelectedItem = "{Binding SelectedItem}"
    

    因此,我设法通过更改问题页面上的图像绑定来解决这个问题,并保留我原来的设置

    <Image
        DataContext="{Binding DataContext, ElementName=myPage, Mode=TwoWay}"
        Source="{Binding Path=myModel.myImage}" />
    
    
    

    这给了我想要的双向绑定。

    如果我没有弄错的话,在这种情况下,对大型
    图像使用
    TwoWay
    模式可能是性能问题。
    <ListView x:Name="mylvw" 
              DataContext="{StaticResource ResourceKey=myList}"
              ItemsSource="{Binding Path=myItems}"
    SelectedItem = "{Binding SelectedItem}"
    
    <Image x:Name="myImage" 
           Source="{Binding Path=SelectedItem.myImage}"/>
    
    <Image
        DataContext="{Binding DataContext, ElementName=myPage, Mode=TwoWay}"
        Source="{Binding Path=myModel.myImage}" />