2011-05-02 83 views
1

我有一個行爲,我想跟蹤控件的行爲,我想從我的ViewModel讀取該行爲的行爲。是否可以綁定到XAML中的System.Windows.Interactivity.Behavior?

目前我在做這個:

<MyControl> 
     <i:Interaction.Behaviors> 
      <b:MyBehavior /> 
     </i:Interaction.Behaviors> 
    </MyControl> 

有沒有我可以綁定到行爲視圖模型或應用程序的其他部分的屬性,而不是在XAML實例化它的方法嗎?什麼是語法?

回答

2

該行爲是純粹的UI概念,ViewModel不應該知道任何關於它的事情。但是,您可以通過綁定使行爲更新ViewModel的屬性。只需要聲明一個依賴屬性上的行爲,並將其綁定這樣的:

<MyControl> 
    <i:Interaction.Behaviors> 
     <b:MyBehavior MyProperty="{Binding MyViewModelProperty, Mode=OneWayToSource}" /> 
    </i:Interaction.Behaviors> 
</MyControl> 

(你也可以使用一個TwoWay約束力的,如果它使課程的意義上)

+0

這是一個好主意,但行爲已經從行爲繼承,並且不能從DependencyObject繼承。 – 2011-05-03 15:19:11

+2

@Dan Monego,[行爲已經從DependencyObject繼承](http://msdn.microsoft.com/en-us/library/system.windows.interactivity.behavior%28v=expression.40%29.aspx)... – 2011-05-03 15:20:44

+1

Levensque - oof。再次感謝 - 我只是去調試這些「A」綁定'只能設置DependencyObject的DependencyProperty「錯誤在這裏然後。 – 2011-05-03 15:27:51

0

Interactivity的大部分邏輯是內部或私有的,例如附加屬性 TriggersBehaviors都是私有的。 Interaction類只提供獲取行爲和觸發器的方法,沒有setter方法。我真的懷疑有很多事情可以做,至少使用現有的類。

也許this question on how to set bahaviors in a style可以給你一個想法如何實現這一點。