Что не работает команда Caliburn при изменении содержимого кнопки?
Используя Caliburn и Silverlight, я обнаружил, что если я сделаю:
<Button PresentationFramework:Message.Attach="ContainerCommand InstructorProfileCommand()"
Height="60"
Content="Instructor" />
Затем это работает, и вызывается метод InstructorProfileCommand.Execute(). Однако, если я сделаю:
<Button Height="60" >
<Grid PresentationFramework:Message.Attach="ContainerCommand InstructorProfileCommand()">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image Source="/App.Module;Component/Icons/navigate.jpg"
Height="50"
Width="50" />
<TextBlock Text="Instructor Profile"
Grid.Column="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="10,0,0,0" />
</Grid>
</Button>
Команда Execute () не запущена. Является ли прикрепленное имущество в правильном месте для его работы?
JD
2 ответа
Решение
Я предполагаю, что во втором случае вы должны использовать синтаксис:
PresentationFramework:Message.Attach="Event Click = ContainerCommand InstructorProfileCommand"
потому что, если триггер (щелчок по событию) не указан явно, платформа пытается вывести его на основе элемента, к которому прикреплено сообщение.
Марко прав. Однако я бы переместил прикрепленное свойство и к кнопке.