c# - 在 DockPanel 中拆分项目

标签 c# wpf xaml

enter image description here

我希望 4 个按钮(通知、打印机、三个点和浅色/深色主题按钮)位于窗口的右侧,而 Humburger 按钮和 TextBox 应保留在左侧,这将使我们的中间部分留空。

XAML:

  <DockPanel >
                <materialDesign:ColorZone Panel.ZIndex="{Binding ElementName=DemoItemsListBox, Path=SelectedItem.ZIndex}"  
                                          Padding="16" materialDesign:ShadowAssist.ShadowDepth="Depth3" materialDesign:ShadowAssist.ShadowEdges="Bottom"
                                            Mode="PrimaryMid" DockPanel.Dock="Top">

                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>

                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>

                        </Grid.ColumnDefinitions>


                        <DockPanel >
                            <ToggleButton DockPanel.Dock="Left" Style="{StaticResource MaterialDesignHamburgerToggleButton}" IsChecked="False" 
                                        x:Name="MenuToggleButton"/>

                            <StackPanel DockPanel.Dock="Left">
                                <materialDesign:ColorZone Mode="PrimaryLight" Padding="8 4 8 4" CornerRadius="2" Panel.ZIndex="1"
                                                          Margin="16 0 0 0"
                                                          materialDesign:ShadowAssist.ShadowDepth="Depth1">
                                    <Grid>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="Auto" />
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="Auto" />
                                        </Grid.ColumnDefinitions>

                                        <Button IsDefault="True" Command="{Binding SearchEmploye}" 
                                                Style="{DynamicResource MaterialDesignToolButton}">
                                            <materialDesign:PackIcon Kind="Magnify" Opacity=".56" />
                                        </Button>
                                        <TextBox  Text="{Binding SearchEmp,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"  
                                                  Grid.Column="1" Margin="8 0 0 0" materialDesign:HintAssist.Hint="" 
                                             materialDesign:TextFieldAssist.DecorationVisibility="Hidden" BorderThickness="0"
                                             MinWidth="200" VerticalAlignment="Center" />
                                    </Grid>
                                </materialDesign:ColorZone>
                            </StackPanel>



                            <materialDesign:PackIcon HorizontalAlignment="Center" VerticalAlignment="Center" 
                                                             Foreground="White" Kind="Printer" Width="24" Height="24"/>

                            <materialDesign:PackIcon Width="24" Height="24" VerticalAlignment="Center" Kind="Bell" Margin="0 0 5 0"></materialDesign:PackIcon>
                            <materialDesign:PackIcon  VerticalAlignment="Center" Kind="ThemeLightDark" Width="24" Height="24"></materialDesign:PackIcon>
                            <materialDesign:PopupBox   Foreground="White"  DockPanel.Dock="Right" PlacementMode="BottomAndAlignRightEdges" StaysOpen="True"/> 

                        </DockPanel>
                    </Grid>
                </materialDesign:ColorZone>

            </DockPanel>

我的目标是有这样的东西(值得一提的是我的窗口使用的是SizeToContent)

enter image description here

最佳答案

我不会使用 DockPanel对于这样的事情;我只想使用 Grid . (我只是使用占位符来显示事情的去向,所以把你的汉堡包按钮放在我放 <Button>Hamburger</Button> 的地方)我想要的整体结构是:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Border Grid.Row="0" Background="Green">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>

            <StackPanel Grid.Column="0" Orientation="Horizontal">
                <Button>Hamburger</Button>
                <TextBox>Search</TextBox>
            </StackPanel>

            <StackPanel Grid.Column="2" Orientation="Horizontal">
                <Button>Print</Button>
                <Button>Notification</Button>
                <Button>Theme</Button>
                <Button>DotDotDot</Button>
            </StackPanel>
        </Grid>
    </Border>
    <Grid Grid.Row="1">
        <!-- Rest of screen -->
    </Grid>
</Grid>

关于c# - 在 DockPanel 中拆分项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52342457/

相关文章:

wpf - ElementName 绑定(bind)失败

c# - ASP.NET MVC Cookie 实现

c# - 是否可以在 Entity Framework Core 中创建基于字符串的 Include 替代方案?

wpf - 如何在 Windows 窗体中使用 MVVM 来显示 WPF 控件

.net - WPF 的 BitmapCache 未完全清除

c# - 如何将 IsEnabled 绑定(bind)到 xaml 中的 vm 属性以获取 DataTemplate 中的按钮?

wpf - 如何传递IValueConverter参数?

xaml - null 时隐藏 xaml 元素

c# - 我如何获得 Visual Studio 解决方案来构建 MVC 项目并将其运行到另一个文件夹?

c# - 如何访问列表中的特定列表?