У меня есть ItemsControl, в котором есть кнопки перемещения вверх, вниз и удаления в каждом элементе (через шаблон).Мой источник ItemsControl связывается с коллекцией Предметов, которые являются моделями DataContracts / POCO (не виртуальными машинами).
Я подключил обработчик сообщений Caliburn к моей главной странице *1004* модели просмотра.
<Button cal:Message.Attach="MoveUp($dataContext)" >Up</Button>
<Button cal:Message.Attach="MoveDown($dataContext)" >Down</Button>
Я считаю, что мне нужно было явно указать cal: Message.Attachне полагайтесь на соглашение, потому что я был в моем ItemTemplate.
Просмотр модели:
ObservableCollection<Item> MyCollection = new ObservableCollection<Item>();
//Item class is simple -- only has a string Name property
public bool CanMoveUp(Item item)
{
var index = MyCollection.IndexOf(item);
return index > 0;
}
public void MoveUp(Item item)
{
var index = MyCollection.IndexOf(item);
if (index > 0)
{
MyCollection.Remove(item);
MyCollection.Insert(index - 1, item);
}
}
public bool CanMoveDown(Item item)
{
var index = MyCollection.IndexOf(item);
return index > -1 && index < class1.Count - 1;
}
public void MoveDown(Item item)
{
var index = MyCollection.IndexOf(item);
if (index > -1 && index < class1.Count - 1)
{
MyCollection.Remove(item);
MyCollection.Insert(index + 1, item);
}
}
Кнопка «вверх» первого элемента изначально отключена.Когда я перемещаю вниз первый элемент, второй элемент становится первым элементом, но его кнопка вверх не отключается автоматически.Как принудительно переоценить метод защиты CanMoveUp?