gpt4 book ai didi

c# - 如何在 MVVM 中正确绑定(bind) Image.Source?

转载 作者:行者123 更新时间:2023-11-30 21:48:46 25 4
gpt4 key购买 nike

我现在花了一些时间试图解决这个问题,但我仍然坚持下去。我有一个带有 MVVM 模式的 WPF 应用程序。在我的 ViewModel 中,我遇到了三种情况:

  • X 需要 Y 并且 Y 可用
  • X 需要 YY 不可用
  • X 不需要 Y

我正在尝试根据这些条件在我的 View 上设置一个图像图标(比如复选标记、感叹号……等等)。

在 ViewModel 中:我创建了我的属性。在任何 GUI 更改时,我都会根据上述情况设置变量,类似于以下内容:

void MyBigFunctionToSetAllProperties()
{
// other cases
// ..
if (NeedsY && YExists)
{
// properties
StatusIconPath = "@\"/Resources/SessionView/X-With-Green-Check-White.png\"";
ResultIconPath = "@\"/Resources/SessionView/Y-White.png\"";
}
}

View.Cs 中:我几乎什么也没做。

View.xaml: 中,我这样绑定(bind):

<StackPanel>
<Image Source="{Binding StatusIconPath} />
</StackPanel>

我仍然不明白为什么它不起作用。我错过的那件事是什么?请和谢谢。

按照建议将属性直接与 Xaml 绑定(bind)是行不通的。我这样试过:

VM:示例属性:

public BitmapImage VerificationStatusIcon{ get { return new BitmapImage(new Uri(@VerificationStatusIconPath, UriKind.Relative));}}

查看 Xaml:

<Image Name="verificationStatusImage" Source="{Binding VerificationStatusIcon}" Margin="5,0" Width="40" Height="40"/>

最佳答案

你的图标路径中有一大堆不必要的字符:

StatusIconPath = "@\"/Resources/SessionView/X-With-Green-Check-White.png\"";
ResultIconPath = "@\"/Resources/SessionView/Y-White.png\"";

把它们改成这样:

StatusIconPath = "Resources/SessionView/X-With-Green-Check-White.png";
ResultIconPath = "Resources/SessionView/Y-White.png";

关于c# - 如何在 MVVM 中正确绑定(bind) Image.Source?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37445912/

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