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) 在左按钮旁边左对齐。该标签上的 HorizontalAlignment 似乎没有任何作用。如果我删除右键,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.Dock
将btnLeft
停靠在DockPanel
的左侧,btnRight
停靠在右侧。然后为 tblkModelType
设置 DockPanel.Dock="Top"
。这会将 TextBlock
拉伸到按钮之间 DockPanel
的整个宽度。
这对我有用。正如您所说,您的控件更复杂,所以如果有任何问题,请与我们分享更多xaml。
我正在尝试制作具有左键、文本和右键的新自定义控件的原型。
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) 在左按钮旁边左对齐。该标签上的 HorizontalAlignment 似乎没有任何作用。如果我删除右键,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.Dock
将btnLeft
停靠在DockPanel
的左侧,btnRight
停靠在右侧。然后为 tblkModelType
设置 DockPanel.Dock="Top"
。这会将 TextBlock
拉伸到按钮之间 DockPanel
的整个宽度。
这对我有用。正如您所说,您的控件更复杂,所以如果有任何问题,请与我们分享更多xaml。