c # wpf форма в форме

Я только что начал c # и Wpf. Я пытаюсь создать утилиту, которая получает компьютеры из активного каталога, отображает их в виде дерева, а затем восстанавливает информацию через WMI. Мне удалось добиться большей части этого, не задавая вопросов. Однако у меня теперь есть проблема с презентацией. Текущий выход Wpf после выбора необходимой информации (диски / принтеры / службы и т. Д.), Я хотел бы отобразить информацию на панели справа. Моя проблема заключается в том, что эта информация может быть в виде вкладок, списка, gridview или graphics.ex. Просмотр вкладки. Каким будет мой лучший способ получить этот результат. Заранее спасибо.

Это область, в которой в настоящее время используется «", которая должна показывать разные форматы.

<StackPanel>
     <DockPanel Margin="3">
        <Border CornerRadius="6"
            BorderBrush="Gray"
            Background="LightGray"
            BorderThickness="2" >
            <StackPanel  Background="SkyBlue" Height="80">
                <StackPanel  Orientation="Horizontal"  VerticalAlignment="Center">
                    <Label Content="Domaine:"  HorizontalAlignment="Left" Height="30"/>
                    <TextBox Name="FrmDomain" HorizontalAlignment="Left" Height="30"  Width="80"/>

                    <Label Content="Zone" Height="30"/>
                    <TextBox Name="FrmTreeZone" HorizontalAlignment="Left" Height="30" Width="80"/>

                    <Label Content="Ordinateur:" />
                    <TextBox Name="FrmTreeOrdi" HorizontalAlignment="Left" Height="30" Width="80"/>

                    <Label Content="Option:" />
                    <TextBox Name="FrmTreeOption" HorizontalAlignment="Left" Height="30" Width="80" />
                    <Label Content="Disponible:" />
                    <TextBlock Name="FrmTreeAlive" HorizontalAlignment="Left" Height="30" Width="40"/>
                </StackPanel>

                <StackPanel  Orientation="Horizontal" VerticalAlignment="Center">
                    <Label Content="Recherche:"/>
                    <TextBox x:Name="FrmRecherche" HorizontalAlignment="Left" Height="30" Width="80"/>
                    <Button x:Name="btnRech" Click="btnRech_MouseClick" >
                        <materialDesign:PackIcon Kind="Search"/>
                    </Button>
                    <Label Content="Mac:" />
                    <TextBox x:Name="FrmMac" HorizontalAlignment="Left" Height="30" Width="80"/>
                </StackPanel>
            </StackPanel>
        </Border>
        </DockPanel>

    <DockPanel Margin="3">
        <Border CornerRadius="6"
            BorderBrush="Gray"
            Background="LightGray"
            BorderThickness="2" >
            <StackPanel Orientation="Vertical" HorizontalAlignment="Left"  Background="LightCyan" MinWidth="300" Width="300">
             <TreeView Name="FrmTreeView" Height="540" Margin="8" 
                      SelectedItemChanged="TreeView_SelectedItemChanged"
                      PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown"
                      TreeViewItem.Selected="NodeSelected">
                <TreeView.Resources>
                    <ContextMenu x:Key="TestMenu">
                    </ContextMenu>

                    <Style TargetType="TreeViewItem" >
                        <Setter Property="HeaderTemplate">
                            <Setter.Value>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <Image Width="20" Margin="3" Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
                                            AncestorType={x:Type TreeViewItem}}, 
                                            Path=Tag,
                                            Converter={x:Static local:HeaderToImageConverter.Instance }}"/>
                                        <TextBlock VerticalAlignment="Center" Text="{Binding}"/>
                                    </StackPanel>
                                </DataTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </TreeView.Resources>
            </TreeView>
    </StackPanel>
        </Border>

        <StackPanel  Name="test" DockPanel.Dock="Right"  Visibility="Visible">
            <Border CornerRadius="6"
            BorderBrush="Gray"
            Background="WhiteSmoke"
            BorderThickness="2" >

                <TextBlock Name="FrmActionAffiche"  Height="540" Margin="8"/>

            </Border>
            <DataGrid Height="1" Name="FrmDataGrid"/>

        </StackPanel>
    </DockPanel>

    <StackPanel Orientation="Horizontal">
        <Button Name="btnDisque" Content="Disque" Height="30" Width="100" Click="btnDisque_MouseClick" />
    </StackPanel>

    <StackPanel Orientation="Vertical" Height="30">
        <StatusBar>
            <StatusBar.ItemsPanel>
                <ItemsPanelTemplate>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="4*"/>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                    </Grid>
                </ItemsPanelTemplate>
            </StatusBar.ItemsPanel>
            <StatusBarItem>
                <TextBlock>Ready</TextBlock>
            </StatusBarItem>
            <StatusBarItem Grid.Column="1">
                <ProgressBar Value="30" Width="80" Height="18"/>
            </StatusBarItem>
            <StatusBarItem Grid.Column="2">
                <TextBlock>Set</TextBlock>
            </StatusBarItem>
            <StatusBarItem Grid.Column="3">
                <TextBlock>Go!</TextBlock>
            </StatusBarItem>
        </StatusBar>
    </StackPanel>

</StackPanel>

Всего 1 ответ


Чтобы иметь возможность отображать различные типы информации по-разному, вы должны использовать DataTemplate, вы можете иметь несколько DataTemplates и выбирать, какой из них отображать на основе типа без какого-либо дополнительного кодирования (или программировать собственную логику для выбора шаблона с помощью DataTemplateSelector).

Например, если TreeView слева содержит элементы типа Computer и Printer, вы можете привязать элемент управления к свойству SelectedItem TreeView (показать текущий выбранный элемент) и добавить DataTemplates для Type = Printer и Type = Computer для этого элемента управления в описать, как вы хотите отобразить любой из них.

Если вы разместите свой текущий код (XAML и C #), я был бы рад предоставить вам пример вашего конкретного случая.


Есть идеи?

10000