2015-02-08 120 views
0

沒有辦法來解釋這個問題,除了通過例如:綁定到綁定:數據綁定 - 或間接在Metabinding WPF

假設你有一個自定義的UserControl有兩個DependencyProperty S,StatList Statsstring ImportantStat。用戶控件的工作是顯示一個表格,其中顯示Stats中的所有值,但是具有ImportantStat的特殊視覺處理(如餅圖)。

我的直覺是寫看起來或多或少像XAML的塊:

<PieChart Value="{Binding Path={Binding ImportantStat} }"/> 

其中DataContext是事先設定爲Stats。因此,用戶通過ImportantStat = "WinPercentage",餅圖綁定到統計行的WinPercentage屬性。但用戶可以輕鬆地選擇其他屬性來強調。

的問題(當然,你已經知道這一點,學歷堆)是你得到一個錯誤信息,說明您不能轉換從Bindingstring,這是外Binding預計,Path。雖然我沒有證明自己,我猜這只是因爲Path不是DependencyProperty

那麼,有什麼方法可以在這裏達到我的目標嗎?請隨意在第一段中打破我的假設。也許,例如,ImportantStat不能是string,但它本身必須是Binding

編輯:嘗試#1失敗

我希望從代碼隱藏新DependencyPropertyBinding ImportantStatBinding暴露,讓我重寫XAML爲:

<PieChart Value="{Binding ImportantStatBinding, RelativeSource=... }"/> 

...但無濟於事。間接Binding只是卡在Value本身沒有試圖解決它。

我的備份解決方案,這可能是在那裏,這是領導,將是剛剛創建裏面的內容代碼隱藏在那裏我有機會獲得ImportantStat直接,因此可以用一個Binding.

+0

'Stats'是什麼?它被輸入爲「StatList」,但顯然這是你的自定義類型。你能發佈一些'StatList'的代碼嗎? – 2015-02-09 09:50:14

回答

0

僅就脫身我知道,沒有其他代碼,沒有辦法以這種方式連接數據綁定。爲了更簡單地說這個問題,我們可以有如下形式的數據綁定(當然):

甲 - >乙 - 「ç

,但你不能有數據形式的結合:

A→B→A *(A表示目標取決於A的值)

因爲關係必須是固定的。

看起來有可能創建一個Converter,他的工作是通過使用一些額外的上下文和該字符串作爲屬性路徑實際取消引用Binding來將字符串轉換爲任意值。這聽起來很麻煩,所以我選擇了我能想到的唯一其他方式:

我爲PieChart添加了一個新的DependencyProperty到後面的代碼,並確保我在適當的時候構建它,以便XAML可以使用它。這是醜陋的,但它的工作原理。我只是覺得裏面有點死亡:)希望有一天有人會發現這有用。