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

WPF left button, centered text, right button in a custom control

我正在尝试制作具有左键、文本和右键的新自定义控件的原型。

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 会居中。

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

这应该有效:

<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。