我想綁定到我的viewmodel上的命令。我正在使用視覺樹上的事件觸發器。我嘗試過很多變種的RelativeSource,FindAncestor和AncestorType試圖綁定它。每當我得到一個綁定路徑表達式錯誤。WPF MVVM可視樹綁定無法綁定
這是我的XAML文檔大綱:
<Window>
<Grid>
<GridView>
<HierarchyChildTemplate>
<DataTemplate>
<TabControl>
<TabItem>
<GridView>
<RowDetailsTemplate>
<TabControl>
<!--trying to bind a event trigger here to a command on the viewModel -->
這裏是我一直在嘗試,結合一個例子:
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding Path=SelectionChangedCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid}}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
我將如何綁定到這個命令,從位置在指出XAML?
你嘗試過'Path = DataContext.SelectionChangedCommand'而不是僅僅SelectionChangedCommand嗎? – Blachshma
是的。這確實給了我一個不同的結果......它會讓我進入第一個GridView的DataContext(綁定GridView的集合中的一個模型),但不會傳遞給ViewModel的DataContext。 –
我不相信這只是因爲觸發器實際上不在*可視樹*中。 RelativeSource綁定走在視覺樹上,當你不在它時很難做到這一點。嘗試切換指定元素的相對來源,例如@ Blachshma答案的第二部分。 – Will