我在将Button
中的UserControl
绑定到父级中的Command
时遇到问题。
我有一个UserControl
(SearchView),它显示搜索结果数据。
其中包含一个Menu
,我想在其中包含一个用于重置用户设置(字体大小,排序等)的函数。由于存在多个此类,因此我希望在其父控件(MainView)中具有“重置功能”。
MainViewXaml:
<UserControl x:class="UI.MainView"
xmlns:ui="clr-namespace:Project.Main.UI">
//some stuff here
<ui:SearchView/>
//some stuff here
</UserControl>
MainView.xaml.vb:
Namespace UI
Public Class MainView
Public ReadOnly Property ResetCommand As New DelegateCommand(AddressOf ResetEinstellungen)
Public Sub ResetEinstellungen()
//Reset Einstellungen ...
End Sub
SearchView:
<UserControl x:Class="UI.SearchView"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
<Grid>
//Table Stuff
</Grid>
<Menu>
<MenueItem Header="Reset"
x:Name="ResetButton">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="Click"
Command="{Binding ResetCommand , RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl} }">
</dxmvvm:EventToCommand>
</dxmvvm:Interaction.Behaviors>
</MenuItem>
</Menu>
我已经尝试了一些变体。
我要避免的是按MainElement的MainName进行命名,因为我可能会在其他视图中使用UserControl
。
答案 0 :(得分:1)
我做了一个实验。
这对我有用:
<MenuItem Header="Reset"
Command="{Binding DataContext.ResetCommand , RelativeSource={RelativeSource AncestorType=UserControl} }"/>
注意:
DataContext.CommandName
您可以在菜单项上使用命令,而不是eventtocommand。
答案 1 :(得分:0)
请尝试将AncestorLevel
设置为2
,因为默认的1
将绑定到SearchView
而不是MainView
:
Command="{Binding ResetCommand , RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=2, AncestorType=UserControl} }