2014-01-28 35 views
0

我想在引發DockPanel上的MouseOver事件後,將我虛擬機中屬性的值設置爲true。到目前爲止沒有觸發器的運氣。你有什麼線索嗎?謝謝根據Xaml中的鼠標懸停事件設置VM屬性

<DockPanel.Style> 
    <Style> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Path=MyProperty}" Value="True"> 
       <Setter Property="??" Value="??"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</DockPanel.Style> 

回答

0

我想如果你分配datacontext到你的整個頁面,它也會按風格挑選。 設置類似的東西,並設置屬性,因爲它的價值。

property = {Binding YourDataContext.YournewValue} 
+0

我的上下文實際上已經設置爲別的東西,不想改變它。我提議的代碼有其他選擇嗎? – goul

+0

不用擔心...只需將其他屬性添加到您的上下文中,然後像更新的答案 – Daniel

1

我用的是交互的命名空間xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 做這樣的事情......

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="MouseEnter"> 
     <i:InvokeCommandAction Command="{Binding DoSomethingCommand, Mode=OneWay}"/> 
    </i:EventTrigger> 
</i:Interaction.Triggers> 

所以,現在你已經觸發基於視圖的事件在VM的命令。顯然,在這一點上的datacontext必須VM使DoSomethingCommand可以在VM被觸發,但如果沒有的話只是改變它泡出一個地方,那裏的數據上下文的VM ...

例如

Command=(Binding DataContext.DoSomethingCommand , RelativeSource={RelativeSource AncestorType=sdk:DataGrid}}

或任何種類的元素有你的虛擬機環境。