我有一个问题,即将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
搜索查看:
<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>
我已经尝试了一些变化。我想避免的是通过其ElementName引用MainView,因为我想在其他视图中使用UserControl
。
尝试将AncestorLevel
设置为2
,因为1
的默认值将绑定到SearchView
而不是MainView
:
Command="{Binding ResetCommand , RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=2, AncestorType=UserControl} }
我把一个实验放在一起。
这对我有用:
<MenuItem Header="Reset"
Command="{Binding DataContext.ResetCommand , RelativeSource={RelativeSource AncestorType=UserControl} }"/>
注意:
DataContext.CommandName
您可以在menuitem而不是eventtocommand上使用命令。