gpt4 book ai didi

c# - WPF,MVVM,如何动态绑定(bind)属性?

转载 作者:行者123 更新时间:2023-12-03 10:32:30 26 4
gpt4 key购买 nike

我有个问题。如何将变量从 ViewModel 动态绑定(bind)到 View?目前,它甚至没有显示。如果我不使用命令,它会很好用(当然,我只能绑定(bind)一次图像)。

我的 查看 :

namespace somestuff.View
{

public partial class WindowView : Window
{
public WindowView()
{
this.DataContext = new WindowViewModel();
InitializeComponent();
}
}
}

我的 查看.Xaml (缩短):
<Image Source="{Binding DisplayedImage}"/>
<Button Command="{Binding NewImageCommand}"/>

还有我的 查看型号:
public WindowViewModel()
{
_canExecute = true;
}

public event PropertyChangedEventHandler PropertyChanged;

private void NotifyPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

public string DisplayedImage //displaying image
{
get { return filepath; }

set { filepath = value; NotifyPropertyChanged(nameof(filepath)); }
}

public string filepath { get; set; } //var for binding


private bool _canExecute;
private ICommand _newImageCommand; //command for button
public ICommand NewImageCommand
{
get
{
return _newImageCommand ?? (_newImageCommand = new Commands.CommandHandler(() => GetImage(), _canExecute));
}
}

public void GetImage() { filepath = Pictures.GetNewImage(); } //command on button click

你能告诉我,为什么在触发命令 GetImage() 之后?在按钮上单击绑定(bind)在 Image 上的图像没有改变?如果我搬家 filepath = Pictures.GetNewImage();从命令(更清楚,我不使用命令)一切都很好,但我无法重新调用绑定(bind)到我的图像。你能告诉我,如何将属性动态绑定(bind)到 View 模型中的 View 中吗?当变量的值(在本例中为文件路径)更改时,我也想更改 View 控件。

感谢您的任何建议。

编辑:

我有 6 Image标签。我在其中显示图像:
public BitmapImage DisplayedHighPerformanceImage
{
get { return kMMHP; }

set { kMMHP = value; NotifyPropertyChanged(nameof(kMMHP)); }
}

所以我需要 filepath初始化 6 个不同的位图。然后我处理那个位图(例如,那个 kMMHP )所以我想显示从 kMMHP 初始化的每个新位图图片。
kMMHP = method1(); //displaying it
//other stuff do with diffrent bmps
kMMHP = method2(); //displaying it after second method with changed values

最佳答案

NotifyPropertyChanged 必须使用属性的名称而不是其支持字段的名称来调用。为了触发更改通知事件,您必须设置属性,而不是支持字段:

public BitmapImage DisplayedHighPerformanceImage
{
get { return kMMHP; }
set { kMMHP = value; NotifyPropertyChanged(nameof(DisplayedHighPerformanceImage)); }
}

DisplayedHighPerformanceImage = method1();

关于c# - WPF,MVVM,如何动态绑定(bind)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52263504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com