2013-12-12 56 views
0

我有一個顯示類似地理地圖的東西視圖之間的視圖(不視圖模型)的屬性,我有一些UserControls這個視圖中,他們每個人的顯示有關的DataContext的相關信息,但每可以這麼說,從一個不同的角度來看。分享不同的用戶控件

然後,我的目標是將鼠標懸停在一個UserControl上,突出顯示每個UserControl中的一個功能,當然這個高亮的視覺樣式對每個UserControl都是特定的。

例如,如果我在地圖上有一條路徑,並將其仰角剖面繪製在一個圖中,我想將鼠標懸停在高程剖面上,在該圖上動態顯示垂直線,同時某些標記會動態顯示在地圖上,反之亦然。

我可以做到這一點通過使用搜索本身的一些數值,這將是在每個用戶控件的雙向數據綁定,但也有一些概念上的問題:

  • 經典綁定pressuposes一個屬性ViewModel,但「鼠標高亮」功能是特定於視圖(它不表示對象狀態),我絕對不希望將這樣的屬性添加到ViewModel,這會污染視圖特定的代碼;
  • 當創建用戶控件,其DataContext的是視圖模型或它的一些屬性。需要將用戶控件的一部分DataContext更改爲不同的對象似乎不是一種建議或簡單的方法;
  • 我可以砍了一下,並在視圖中創建一個Slider與摺疊的可見性,並與每個UserControl使用ElementBinding,但仍然,我將如何做一個視圖和包含的UserControl之間的ElementBinding?

所以,主要的問題是:

我怎樣才能在View(!不是在視圖模型),以包含在給定的視圖許多用戶控件綁定一個單一的財產?

如果一切是一個單一的,整體的景觀,使用ElementBinding將是顯而易見的選擇對我來說,卻是不同類(一個視圖和多用戶控件),我不知道該怎麼辦ElementBinding,或者即使是做我想做的事情的正確方法。

回答

1

我可能會丟失的問題,但你爲什麼不只需添加一個依賴屬性您查看並將其綁定到用戶控件包含的?

<YourView x:Name="yourView"> 
<YourUserControl SomePropertyOfYourUserControl="{Binding ElementName=yourView, Path="YourView's DependencyProperty"/> 
<YourSecondUserControl SomePropertyOfYourSecondUserControl="{Binding ElementName=yourView, Path="YourView's DependencyProperty"/> 
</YourView> 

-

編輯完成我的回答:

你說:

經典綁定pressuposes在視圖模型

..但它的屬性不必這樣做,因爲你也可以綁定到依賴項prop在視圖中(在其代碼隱藏中)。

+0

有趣......我要去看看,謝謝了! – heltonbiker