WPF绑定到代码隐藏方法

WPF绑定到代码隐藏方法,wpf,binding,code-behind,Wpf,Binding,Code Behind,这很烦人-我知道我会如何在网上做 我有一个wpf映像,我想将它的源属性绑定到一个方法,并从它的绑定项传入一个属性 即 这就是.NET不使用方法返回简单对象,而是使用CLR属性的原因。您使用的是Java风格,而不是.NET风格 public string MySource { get { return "images/" + name + ".png"; } } 现在属性已公开,您有一些选择: 在构造函数中将视图数据绑定到自身:DataContext=this 命名你的UserContro

这很烦人-我知道我会如何在网上做

我有一个wpf映像,我想将它的源属性绑定到一个方法,并从它的绑定项传入一个属性


这就是.NET不使用方法返回简单对象,而是使用CLR属性的原因。您使用的是Java风格,而不是.NET风格

public string MySource {
  get { return "images/" + name + ".png"; }
}
现在属性已公开,您有一些选择:

在构造函数中将视图数据绑定到自身:DataContext=this

命名你的UserControl或其他名称

使用相对资源绑定

编辑:

如果我理解得很好,实际上您希望使用参数(此处的图像名称)进行绑定。您不能。只有命令绑定允许CommandParameter。您可以使用许多资源声明的ObjectDataProviders或转换器,但对于您的简单工作来说,这会带来太多开销

您的简单解决方案是:对所有图像使用数组,并单向绑定到此数组的各个对象

private string[] mysource = new[] {
  "images/foo.png", 
  "images/bar.png", 
  "images/baz.png"};
public string[] MySource {
  get { return mySource; }
}
在构造函数中将视图数据绑定到自身:DataContext=this

等 我没有测试它,但下面文章中的人测试了它:

好的,我们就要接近了,所以也许我应该澄清我的要求:如果我使用上一篇文章中所示的CPR属性,我的映像将位于使用ItemsSource绑定的listview中。因此名称来自应用于listview的绑定。映像位于listview中,我现在需要说Source={binding MySourceName}-或者您给我的任何适当命令:如果图像的源依赖于项,那么属性可能会进入表示每个项的类中。项的名称在其中,我需要根源灵活。这是ASP.NET世界上最简单的事情,为什么WPF必须如此困难。不要紧,我现在用另一种方法解决了这个问题。我确信这是我在某个时候需要做的事情,但我真的不想使用转换器,所以如果有人有一个答案,那就好了。你能把Aurelian标记为正确的吗?或者请把你的答案贴出来,以帮助其他人寻找类似的答案:但是没有人给我我需要的答案,我是leavi如果有人知道正确答案,请打开它。我编辑了我的解决方案,为您提供了一个可能的简单解决方案。
public string MySource {
  get { return "images/" + name + ".png"; }
}
private string[] mysource = new[] {
  "images/foo.png", 
  "images/bar.png", 
  "images/baz.png"};
public string[] MySource {
  get { return mySource; }
}