brg*_*rgn 38 c# wpf xaml textbox dockpanel
我将一个DockPanel添加到RadioButton元素,这样我就可以使用100%的宽度水平分配单选按钮标签,文本框和按钮.
LastChildFill="True"
在DockPanel中使用会拉伸最后一个元素.如果文本框是面板中的最后一个子项,这很好用.但是,由于按钮是最后一个元素并且具有固定宽度,因此应该拉伸文本框.但是,没有像这样的财产2ndChildFill="True"
.
我的代码看起来像这样:
<RadioButton HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch">
<DockPanel >
<TextBlock VerticalAlignment="Center">in location:</TextBlock>
<TextBox Grid.Column="1" Margin="10,0,0,0">Path string</TextBox>
<Button HorizontalAlignment="Right"
Margin="10,0,0,0" Padding="3,0">...</Button>
</DockPanel>
</RadioButton>
Run Code Online (Sandbox Code Playgroud)
它给了我这个:
任何想法,提示解决这个问题?提前谢谢了...
max*_*max 54
您需要DockPanel.Dock
为元素设置附加属性并保留TextBox
为最后一个元素:
<RadioButton HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch">
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Left"
VerticalAlignment="Center"
Text="in location:" />
<Button DockPanel.Dock="Right"
Margin="10,0,0,0"
Padding="3,0"
Content="..." />
<TextBox Margin="10,0,0,0">
Path string
</TextBox>
</DockPanel>
</RadioButton>
Run Code Online (Sandbox Code Playgroud)
接受的答案正在解决您的问题,但会产生另一个问题。如果有人使用键盘 ( TAB
) 在您的界面中导航,Button
则会在 之前获得焦点TextBox
。从长远来看,这可能会非常烦人。如果您不想阻止 Tab 键顺序,请使用Grid
以下命令DockPanel
:
<RadioButton HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" VerticalAlignment="Center">in location:</TextBlock>
<TextBox Grid.Column="1" Margin="10,0,0,0">Path string</TextBox>
<Button Grid.Column="2" HorizontalAlignment="Right" Margin="10,0,0,0" Padding="3,0">...</Button>
</Grid>
</RadioButton>
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用TabIndex
属性自己控制 Tab 键顺序。但这可能很棘手,尤其是当您在集合中显示控件时。
<RadioButton HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" TabIndex="0">
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Left" VerticalAlignment="Center" Text="in location:" />
<Button DockPanel.Dock="Right" Margin="10,0,0,0" Padding="3,0" Content="..." TabIndex="2"/>
<TextBox Margin="10,0,0,0" TabIndex="1">Path string</TextBox>
</DockPanel>
</RadioButton>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17342 次 |
最近记录: |