У меня есть модель представления, у которой есть еще один набор классов. Другой класс содержит реализации ICommand в качестве своих свойств. Я хотел бы выполнить одну из команд с двойным щелчком.Как использовать Message.Attach для вызова методов внутри другого объекта
К сожалению, Caliburn.Micro вместо этого создает исключение («Нет цели для метода Commands.Command.Execute.»).
Я попытался выполнить поиск в сети и прочитать документацию, но безуспешно.
Как это сделать правильно?
Примечание: в реальном приложении сообщение может быть присоединено к представлению сетки, которое может иметь другой DataContext, чем модель представления, содержащая класс команд.
Часть XAML:
<Window x:Class="WpfApplication8.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cal="http://www.caliburnproject.org">
<Grid>
<TextBox
cal:Message.Attach="[Event MouseDoubleClick]
= [Action Commands.Command.Execute(null)]" />
</Grid>
</Window>
Код-за класс:
namespace WpfApplication8
{
public partial class MainWindow
{
public Commands Commands { get; set; }
public MainWindow()
{
this.Commands =
new Commands { Command = new Command { MainWindow = this } };
this.InitializeComponent();
this.DataContext = this;
}
}
public class Commands
{
public Command Command { get; set; }
}
public class Command
{
public MainWindow MainWindow { get; set; }
public void Execute(object parameter)
{
this.MainWindow.Title = "Executed";
}
}
}
Рассмотрим проверить [Action.TargetWithoutContext] (https://caliburnmicro.codeplex.com/wikipage?title=All%20About%20Actions) –
Спасибо, решена. cal: Message.Attach = "[Event MouseDoubleClick] = [Action Execute (null)]" cal: Action.TargetWithoutContext = "{Binding Commands.Command}" – alik