2010-11-16 63 views
1

我正在用C#和WPF編寫2D圖形工具,並且我在Shapes上使用Adorners,並將其繪製爲Canvas訪問來自Adorner的數據

我希望裝飾者突出顯示當某個形狀被視爲「已選」時,我正在使用MouseDownMouseUp事件。

但是,用戶可以選擇多個形狀,因此不是所有的形狀都會接收這兩個鼠標事件。

我有一個管理繪圖的類,它保存所選形狀的List。允許裝飾者訪問這些數據的最佳方式是什麼,以便他們能夠看到他們的裝飾元素是否被選中?

有些事情是我認爲:

  • 使得List全球 - 壞主意
  • 子類每個形狀添加一個「選擇」屬性 - 需要改變的形狀的所有引用我類

回答

1

您可以在您的形狀上設置附加的依賴屬性 - 然後您可以在選擇屬性時設置該屬性。 裝飾者可以將可見性綁定到形狀上的屬性,以便您自動設置可視性。

您也可以使用形狀的標籤屬性來存儲值 - 這是做它的老樣子:)

+0

您還可以實現對的DependencyProperty的PropertyChanged自動設置所選形狀的裝飾器。 – 2010-11-16 11:22:02

+0

我看了標籤,但它們不適用於形狀,只適用於裝飾者!我可以將標籤功能添加到現有的類嗎? – dig412 2010-11-16 11:26:02

+0

這些形狀是從System.Windows.Shapes.Shape派生的橢圓,多邊形和矩形對嗎? Shape類具有Tag屬性。它來自FrameworkElement,所以你應該擁有它:) – 2010-11-16 22:12:25