Создан пользовательский контроль.Элемент управления имеет поле, которое не поддерживает команды, и я решил использовать триггер события для вызова команды.Но это не работает.Приложение следует шаблону MVVM.Скажите, что я делаю не так?
Создать DP в UserControl для свойства привязки:
public ICommand EditorFormula {
get { return (ICommand)GetValue(EditorFormulaProperty); }
set { SetValue(EditorFormulaProperty, value); }
}
public static readonly DependencyProperty EditorFormulaProperty =
DependencyProperty.Register("EditorFormula", typeof(ICommand), typeof(FormIndexControl), null);
Создать элемент управления в моем UserControl:
<UserControl x:Class="UControls.FormIndexControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:wpfm="clr-namespace:WpfMath.Controls;assembly=WpfMath"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:local="clr-namespace:test"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="200" DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<StackPanel>
<wpfm:FormulaControl Formula="{Binding Path=IndexFormula}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding Path=EditorFormula}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</wpfm:FormulaControl>
</StackPanel>
</Grid>
</UserControl>
Binding UserControl XAML:
<uc:FormIndexControl EditorFormula="{Binding DataContext.CommandOpenEditor , RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"/>
И создать команду.В классе DelegateCommand реализован интерфейс ICommand (он обязательно работает):
public class test{
public test(){
CommandOpenEditor = new DelegateCommand(OpenEditorFormula);
}
public ICommand CommandOpenEditor { get; set; }
private void OpenEditorFormula(object obj) {
// He not invoked
}
}