自定义控件中的 WPF 左键、居中文本、右键

问题描述

我正在尝试设计一个新的自定义控件的原型,该控件具有左按钮、文本和右按钮。

XAML 如下所示:

<StackPanel Width="250" Orientation="Vertical" >
 
    <DockPanel Background="Azure" Width="250">
        <Button Name="btnLeft" HorizontalAlignment="Left" Width="30" Background="DarkGray" Click="btnAdd_Click" Template="{DynamicResource StandardButtonTemplate1}">
            <StackPanel Orientation="Horizontal">
                <Image Source="/Images/PrevIoUs25px.png" VerticalAlignment="Center" Name="imgLeft"></Image>
            </StackPanel>
        </Button>

        <TextBlock Name="tblkModelType" HorizontalAlignment="Center" Foreground="Black" FontSize="20">Import</TextBlock>
        
        <Button Name="btnRight"  HorizontalAlignment="Right" Width="30" Background="DarkGray"  Click="btnAdd_Click" Template="{DynamicResource StandardButtonTemplate1}" >
            <StackPanel Orientation="Horizontal">
                <Image Source="/Images/Next25px.png" VerticalAlignment="Center" Name="imgRight"></Image>
            </StackPanel>
        </Button>
    </DockPanel>
</StackPanel>

按钮左右对齐没问题,但 (tblkModelType) 在左按钮旁边左对齐。该标签上的 Horizo​​ntalAlignment 似乎没有做任何事情。如果我删除右键,TextBlock 会居中。

有谁知道如何获得外部按钮和位于 Dockpanel 中心的 TextBlock?我想我可以使用网格,但它会使其余的控件更加复杂。

解决方法

这应该有效:

<DockPanel Background="Azure" Width="250" >
    <Button DockPanel.Dock="Left" Name="btnLeft" Width="30" Background="DarkGray" Click="btnAdd_Click" Template="{DynamicResource StandardButtonTemplate1}">
        <StackPanel Orientation="Horizontal">
            <Image Source="/Images/Previous25px.png" VerticalAlignment="Center" Name="imgLeft"></Image>
        </StackPanel>
    </Button>           

    <Button DockPanel.Dock="Right" Name="btnRight" Width="30" Background="DarkGray"  Click="btnAdd_Click" Template="{DynamicResource StandardButtonTemplate1}" >
        <StackPanel Orientation="Horizontal">
            <Image Source="/Images/Next25px.png" VerticalAlignment="Center" Name="imgRight"></Image>
        </StackPanel>
    </Button>
    <TextBlock DockPanel.Dock="Top" HorizontalAlignment="Center" Name="tblkModelType" Foreground="Black" FontSize="20">Import</TextBlock>
</DockPanel>

使用 DockPanel.DockbtnLeft 停靠在 DockPanel 的左侧,将 btnRight 停靠在右侧。然后为 tblkModelType 设置 DockPanel.Dock="Top"。这会将 TextBlock 拉伸到按钮之间 DockPanel 的整个宽度。

这对我有用。正如您所说,您的控件更复杂,所以如果有任何问题,请与我们分享更多的 xaml。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...