Моя проблема не в подключении DependencyProperties
в UserControl
. Это не проблема. Когда я связываю кнопку в UserControl
с UserControl
DependencyProperty
, называемой TargetCommand
, привязка прерывается, когда я устанавливаю DataContext
на UserControl
. Я пытался использовать FindAncestor
и, конечно, ElementName
, но они работают, только когда на UserControl
.
нет
DataContext
.
Есть ли способ обойти это?
пример:
Главное окно
<Window xmlns:UserControls="clr-namespace:SomeNameSpace">
<Grid>
<UserControls:MyUserControl
TargetCommand="{Binding PathToCommand}"
DataContext="{Binding PathToSomeModel}" />
MyUserControl Code Behind
public partial class MyUserControl : UserControl
{
public static readonly DependencyProperty TargetCommandProperty =
DependencyProperty.Register( "TargetCommand", typeof( ICommand ), typeof( MyUserControl ) );
public ICommand TargetCommand
{
get { return (ICommand)GetValue( TargetCommandProperty ); }
set { SetValue( TargetCommandProperty, value ); }
}
MyUserControl - Xaml
<UserControl x:Name="root">
<Button Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=TargetCommand}" />
<Button Command="{Binding Path=TargetCommand, ElementName=root}" />
Методы привязки RelativeSource и ElementName в MyUserControl подключаются правильно, если DataContext не установлен для MyUserControl в MainWindow. Ни одна из них не работает после установки DataContext.
Есть ли способ установить DataContext в MyUserControl и при этом сохранить привязку DependencyProperty к TargetCommand?