编写这是烦人 - 我知道我怎么会做它在网页...WPF绑定背后方法
我有一个WPF图像,我想结合它的源属性的方法,并传入来自它的绑定项目的属性。
IE。
<image source="GetMySource({binding name})" />
哪里GetMySource是
protected string GetMySource(string name)
{
return "images/"+name+".png";
}
编写这是烦人 - 我知道我怎么会做它在网页...WPF绑定背后方法
我有一个WPF图像,我想结合它的源属性的方法,并传入来自它的绑定项目的属性。
IE。
<image source="GetMySource({binding name})" />
哪里GetMySource是
protected string GetMySource(string name)
{
return "images/"+name+".png";
}
这是.NET不使用方法返回简单对象的原因,但CLR性能。你正在做Java风格,而不是.NET风格。
public string MySource {
get { return "images/" + name + ".png"; }
}
现在的财产暴露,你有一些选择:
的DataBind你的观点本身(在构造函数中:DataContext = this;
)
<图片来源= “{结合MYSOURCE}” />
为您的UserControl命名(或其他)(<UserControl x:name="this" ...>
)
<图像源= “{结合MYSOURCE,的ElementName =此}”/>
使用的RelativeSource结合
<图像源=“{结合MYSOURCE,的RelativeSource = {的RelativeSource FindAncestor,AncestorType =用户控件} “/>
编辑:
如果我没理解好,其实你想要做的一个参数绑定(名这里的图像)。你不能。只有Command绑定允许CommandParameter。你可以使用许多资源声明的ObjectDataProviders或Converters,但这对于你的简单工作来说开销太大。
您的简单解决方案:为所有图像使用数组,并单向绑定到此数组的单个对象。
private string[] mysource = new[] {
"images/foo.png",
"images/bar.png",
"images/baz.png"};
public string[] MySource {
get { return mySource; }
}
的DataBind视图以本身(在构造:DataContext = this;
)
<图像源= “{结合MYSOURCE [0]}”/>
我没有测试,但是从下面的文章的人做的事: http://www.codeproject.com/Articles/37352/WPF-Binding-to-individual-collection-items-but-not.aspx
OK,我们已经很接近了,所以也许如果我使用CPR特性如图过去后我要澄清我的要求:) ,我的形象生活已经使用itemssouce绑定列表视图中。因此“名称”来自应用于列表视图的绑定。 图像是列表视图里,我需要现在说“来源=” {结合MYSOURCE(名称)}” - 或任何适当的命令,你给我:) – 2010-03-29 14:40:14
如果图像的来源取决于该项目,则物业可能进去类,它表示每一个项目。 – 2010-03-29 14:57:55
该项目的名称是在那里,我需要的根源是灵活的,这是在世界上ASP.NET的最简单的事情,为什么WPF必须如此该死的困难。 – 2010-03-29 20:32:45
没关系,我解决了这个问题,现在另一种方式。我确信这是我需要做的一些事情,但我不想使用转换器,所以如果任何人有一个好的答案。 – 2010-03-30 13:39:25
您能标记Aurelien为正确的或发布您的答案,请帮助其他人寻找类似的答案:) – Chris 2010-04-08 23:44:28
但他们都没有给我我需要的答案,我打开它以防万一有人知道正确的答案。 – 2010-04-09 06:05:08