Обмен основного содержимого приложения - PullRequest
0 голосов
/ 18 ноября 2011

Какая практика будет лучшим подходом к обмену контента в соответствии с выбором списка?Подумайте, как работают ссылки панели управления 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>

Есть предложения?

1 Ответ

1 голос
/ 18 ноября 2011

Я считаю, что вам нужно изменить Conetnt на ContentControl на основе выбора в другом элементе управления, например ListView, ListBox, TreeView и т. Д.

Я сделал это так

            <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> есть все экземпляры различных ViewModel, упомянутых в XAML

Здесь сообщается шаблону данных, какой тип данных у вашего SelectedItem будет иметь ...
DataTempaltes автоматически выберет правильный вариант для вашего .... просто поместите правильное представление в правильный шаблон данных ...;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...