У меня есть UserControlBase
с сеткой. Сетка содержит столбец с Action.ICommand не работает в Silverlight Пользовательский контроль
<sdk:DataGridTemplateColumn Header="Action">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<Button Style="{StaticResource DataGridButton}" Command="{Binding Source={StaticResource NewsViewModel}, Path=ModifyNewsCommand}" Content="Modify" />
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
Моя проблема с моим Command
. Это бросает меня Техническая ошибка, которая является моей первой проблемой, я не знаю, как сделать это приложение бросить мне настоящее сообщение об ошибке.
В коде позади моего пользовательского элемента управления Я зарегистрировал события:
protected void RegisterMessages()
{
Messenger.Default.Register<string>(this, "NewNewsBtn_Click", NewNewsBtn_Click);
Messenger.Default.Register<string>(this, "ModifyNewsBtn_Click", ModifyNewsBtn_Click);
}
И в моем конструкторе:
public NewsWindow(int underlyingId)
{
InitializeComponent();
this.RegisterMessages();
viewModel = new NewsViewModel(underlyingId);
ucNewsPanel.DataContext = viewModel;
}
Мой вид модели (NewsViewModel)
public ICommand ModifyNewsCommand
{
get
{
return new RelayCommand<string>(e =>
{
Messenger.Default.Send(string.Empty, "ModifyNewsBtn_Click");
});
}
}
Что такое странно, что мой NewNewsBtn
работает, а мой ModifyNewsBtn
не является.
Эта кнопка находится за пределами сетки, поэтому она может повлиять на то, почему она работает.
<Button x:Name="NewNewsBtn" MaxHeight="50" MaxWidth="100" Command="{Binding Path=NewNewsCommand}" Content="Add New" />
Почему вы используете StaticResource в вашем Binding вместо того, чтобы просто получить доступ к DataContext? Мне кажется, что это причина того, что ваша кнопка не работает. – Martin
Я предполагаю, что эта часть неверна ** Command = "{Binding Source = {StaticResource NewsViewModel}, Path = ModifyNewsCommand}" ** – ViVi
@Martin - Если удалить StaticResource и просто оставить Path, он не работает. Это не бросает мне ошибку, но не входит в метод. –