Я пытаюсь создать что-то вроде интерфейса с вкладками MDI, поэтому у меня есть панель навигации (Listbox) слева и ContentPresenter справа.
У меня есть ShellViewModel, которая имеет BindableCollectionна нем он называется «ДоступныеСкриншоты», и мне удалось успешно связать этот список с помощью шаблона данных ListViews:
<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>
Проблема теперь в том, что хотя имя кнопки задано правильно, я не могу заставить команду запускатьсядля меня.В классе MdiViewModel у меня есть следующий код для этой кнопки:
public bool CanDisplayView()
{
return true;
}
public void DisplayView()
{
MessageBox.Show("Hello");
}
Все примеры Caliburn.Micro работают с привязкой через соглашения к свойству x: Name, но если я удалю Text = "{Binding} "он перестает работать, поэтому я подозреваю, что этот способ привязки данных не работает для подмоделей?
В любом случае, ViewModel в Shell на данный момент довольно прост:
ShellViewModel
* AvailableScreens
-MdiViewModel1
-MdiViewModel2
* CurrentActiveScreen
Есть идеи, как мне это сделать с Caliburn.Micro?Роб Айзенберг предложил мне в Твиттере, я мог бы начать с Caliburn.Micro, прежде чем углубляться в полноценную среду Caliburn.