編寫這是煩人 - 我知道我怎麼會做它在網頁...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