我有兩個自定義控件,類似於節點和繪製節點之間鏈接的控件。將屬性數據綁定到兩個依賴項屬性
我想盡可能在xaml中寫入儘可能多的控件。鏈接將這兩個節點存儲爲依賴項屬性,並且每當節點移動時,我都使用數據綁定來移動節點之間的連線。
根據兩個節點之間的距離,能夠改變線條的某些其他值,例如筆畫寬度,將會很棒。所以當任何一個節點移動時,屬性都需要更新,而且我無法理解這種方式的效果。
任何人有任何想法?
我有兩個自定義控件,類似於節點和繪製節點之間鏈接的控件。將屬性數據綁定到兩個依賴項屬性
我想盡可能在xaml中寫入儘可能多的控件。鏈接將這兩個節點存儲爲依賴項屬性,並且每當節點移動時,我都使用數據綁定來移動節點之間的連線。
根據兩個節點之間的距離,能夠改變線條的某些其他值,例如筆畫寬度,將會很棒。所以當任何一個節點移動時,屬性都需要更新,而且我無法理解這種方式的效果。
任何人有任何想法?
,你可以嘗試做這樣的事情:
< Multibinding轉換器= 「{StaticResource的轉換器}」 >
<綁定路徑= 「節點1」 的RelativeSource |源.../>
<綁定路徑= 「節點2」 .../>
</Multibinding >
實現接口IMultiValueConverter,基本上根據節點之間的距離來計算筆畫看起來應該是什麼樣子。
在xaml中創建轉換器的實例,並將其添加到您的多重綁定的Converter屬性中。
這個解決方案的優點是,你有非常清晰的類模型,每個類都做簡單的任務。此外,稍後,您可以配置轉換器類以支持額外的情況,而不需要接觸節點類,該節點類保持簡單並且僅爲顯示節點而設計。
一般來說,無論何時必須將多個屬性值映射到另一個屬性,都必須使用多重綁定和轉換器。
您可以在鏈接類中定義一個屬性StrokeWidth,每當節點移動時計算該屬性的StrokeWidth,然後將適當的樣式屬性綁定到它。
我想你也可以嘗試使用DataTriggers做些事情,但他們需要特定的值來處理 - 你不能使用任何類型的表達式。這會使解決方案很難很好地適應節點之間的廣泛距離。
我目前在xaml中的代碼隱藏和數據綁定中使用了一個屬性。當任一節點移動時,他們會告訴任何鏈接要更新。儘管對WPF沒有經驗,但它並不是最優雅的解決方案。 – tenpn 2008-09-20 22:33:06