활성화되고 나는 Conductor<Workspace>.Collection.OneActive
에서 상속 ShellViewModel
및 ActiveItem
의 x:Name
속성을 가진 ContenControl
이있는 ShellView
있습니다.화면이
Workspace
은 Screen
을 상속합니다.
ShellViewModel
public class ShellViewModel : Conductor<Workspace>.Collection.OneActive
{
ShellViewModel(IEnumerable<Workspace> items)
{
this.Items = items;
// below is not how I activate, just an example for descriptive purposes
this.ActivateItem(this.Items.FirstOrDefault(e => e.Id == "Container"));
}
}
위에서 ShellView
<ContentControl x:Name="ActiveItem" />
내 Items
컬렉션을 성공적으로 Workspace
의 객체로 채워되고 object of Workspace
성공적으로 ContentControl
ActivateItem
에 표시됩니다 ca이다. lled.
ActiveItem
은 Screen
이며 ObservableCollection<PanelViewModel>
을 포함하는 Conductor<Workspace>
이 아닙니다. 내 ContainerView
은 ItemsControl
이고 ItemsSource
은 PanelViewCollection
에 속하며 템플릿 재 지정은 'UniformGrid'를 사용하여 표시합니다.
ContainerViewModel
public class ContainerViewModel : Screen
{
// get/set implantation missed for brevity
public ObservableCollection<PanelViewModel> PanelViewCollection
{
get;
set;
}
public void AddPanelViewModel()
{
var @new = new PanelViewModel();
this.PanelViewCollection.Add(@new);
}
}
ContainerView는
<ItemsControl ItemsSource="{Binding PanelViewCollection}>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
는 내 ContainerView
에 Button
컬렉션에 추가됩니다 ContainerViewModel
과 new PanelViewModel
에 AddPanelViewModel
함수를 호출하고 그것은에 표시된다 ContainerView
.
이 시점까지 모든 것이 제대로 작동하는 것 같습니다.
Conductor<Workspace>.Collection.OneActive
에서 PanelViewModel
상속 및 PanelView
는 ActiveItem`x:Name
의 속성을 가진 ContenControl
있다.
PanelViewModel
public class PanelViewModel : Conductor<Workspace>.Collection.OneActive
{
PanelViewModel(IEnumerable<Workspace> items)
{
this.Items = items;
// below is not how I activate, just an example for descriptive purposes
this.ActivateItem(this.Items.FirstOrDefault(e => e.Id == "PanelA"));
}
}
의 PanelViewPanelView
가 표시되는 동안
<StackPanel>
<TextBlock Text="There be treasure here!" />
<ContentControl x:Name="ActiveItem" />
</StackPanel>
(I 볼 여기에 보물)을 ActiveItem
이 표시 나는이 함께 할 수있는 뭔가가 생각되지 않는 활성화, Workspace
의 OnActivate
메서드가 활성화되었으므로 호출되지 않습니다.
내가 무엇을 놓쳤는가?
나는 그것을 검토 경사의 나 사람들에 대한 Git repo에 예를 저지른
편집 :
작업 영역의 OnActivate 메서드가 호출되지 않았는지 확인하는 방법은 무엇입니까? OnActivate를 재정의 했습니까? 활성화 된 상태를보기 위해'PanelViewModel'을 디버깅 할 가치가 있습니다. – Chris
@Chris - 네,'WorkActivate' 메소드를 오버라이드 OnActivate 메소드를 호출하여 호출되는지 확인합니다. 또한 검토 할 시간이 있다면 Git repo (게시물의 링크)에 예제 코드를 커밋했습니다. 모든 필수 코드를 생략했습니다. 'PanelViewModel'이 활성화되어 있지 않은 것처럼 보입니다,'IsActive = false',/is 이슈입니까? – Unflux
그런데 문제가 될 수 있다고 생각합니다. 나는 달려야한다. 그러나 내가 시간을 가지면 더 많이보고, 시험해 볼 것이다. – Chris