Я пытаюсь создать что-то вроде интерфейса с вкладками MDI, поэтому у меня есть панель навигации (Listbox) слева, а ContentPresenter справа.
У меня есть ShellViewModel, который имеет BindableCollection на нем под названием AvailAbleScreens, и мне удалось успешно привязать к этому списку с помощью DataView: ListView:
<ListView x:Name="AvailableScreens">
<ListView.ItemTemplate>
<DataTemplate>
<WrapPanel>
<BulletDecorator />
<Button x:Name="DisplayView">
<TextBlock Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged}" />
</Button>
</WrapPanel>
</DataTemplate>
</ListView.ItemTemplate>
Теперь проблема заключается в том, что, хотя имя кнопки установлено правильно, я не могу заставить Command fire для меня. В классе MdiViewModel у меня есть следующий код для этой кнопки:
public bool CanDisplayView()
{
return true;
}
public void DisplayView()
{
MessageBox.Show("Hello");
}
Все образцы Caliburn.Micro работают с привязкой через соглашения к свойству x: Name, но если я удалю Text = "{Binding}", он перестает работать, поэтому я подозреваю, что этот способ привязки данных не работает для sub -моделей?
В любом случае, Shell ViewModel на данный момент довольно прост:
ShellViewModel
* AvailableScreens
-MdiViewModel1
-MdiViewModel2
* CurrentActiveScreen
Любая идея, как я буду делать это с Caliburn.Micro? Роб Эйзенберг предложил мне в Twitter. Возможно, мне захочется начать с Caliburn.Micro, прежде чем отправиться в полноценную платформу Caliburn.