c # wpf форма внутри формы - PullRequest
       1

c # wpf форма внутри формы

0 голосов
/ 01 ноября 2018

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

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

<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 Ответ

0 голосов
/ 01 ноября 2018

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

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

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

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