哪种做法是根据列表框选择更换内容的最佳方法?想想win7的左侧控制面板的链接是如何工作的 - 这就是我想要实现的目标。
到目前为止,我已经设置了代码,但由于某些原因我无法让它实际工作(可能是我做错了绑定)而且我认为这可能不是最好的方法任
<Window x:Class="ControlCenter.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ControlTemplate x:Key="workspace_1" x:Name="Workspace_1">
<StackPanel>
<Button>Test</Button>
<Button>Link to Workspace 2</Button>
<Button>Random function 3</Button>
</StackPanel>
</ControlTemplate>
<ControlTemplate x:Key="workspace_2" x:Name="Workspace_2">
<StackPanel>
<Button>Test 2</Button>
<TextBlock>Some random text</TextBlock>
<Button>Placeholder</Button>
</StackPanel>
</ControlTemplate>
<ControlTemplate x:Key="workspace_3" x:Name="Workspace_3">
<Border Background="Black" />
</ControlTemplate>
</Window.Resources>
<Grid>
<DockPanel>
<ListBox Name="lst_workspaces" Width="150">
<ListBoxItem Content="{DynamicResource ResourceKey=workspace_1}" />
<ListBoxItem Content="{DynamicResource ResourceKey=workspace_2}" />
<ListBoxItem Content="{DynamicResource ResourceKey=workspace_3}" />
</ListBox>
<ContentControl Template="{Binding ElementName=lst_workspaces, Path=SelectedItem.Value}">
</ContentControl>
</DockPanel>
</Grid>
有什么建议吗?
答案 0 :(得分:1)
我相信您需要根据ContentControl
,ListView
,ListBox
等其他控件中的选择更改TreeView
上的Conetnt
我这样做了
<ContentControl Name="userControlContentControl"
Content="{Binding ElementName=YourListViewname,
Path=SelectedItem}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type ViewModelLayer:UserControl1ViewModel}">
<ViewLayer:UserControl1 DataContext={Binding}/>
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModelLayer:UserControl2ViewModel}">
<ViewLayer:UserControl2 DataContext={Binding} />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModellayer:UserControl3ViewModel}">
<ViewLayer:UserControl3 DataContext={Binding} />
</DataTemplate>
<DataTemplate DataType="{x:Type ViewModellayer:UserControl4ViewModel}">
<ViewLayer:UserControl4 DataContext={Binding} />
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
我的ListView的集合ObservableCollection<ViewModelBase>
包含XAML中提到的不同ViewModel
的所有实例
这里告诉数据模板您的SelectedItem将具有哪种类型的数据类型...
DataTempaltes将自动为您选择正确的....只需将正确的视图放入正确的数据tempalte ...;)