如何在WPF中创建一个带有Button的TextBox?

Max*_*kin 13 wpf xaml textbox

我想做TextBox一个Button内部,像一个DatePicker,但不完全.或者它可以是一个ComboBox内部TextBox,所以你可以切换模式TextBox.

你能帮助我吗?

Nir*_*Nir 12

如果你想要一个类似组合框或日期时间选择器的东西,你应该创建一个新的控件,在这个新的控件里面放置一个文本框和一个按钮并排在一个框架内,看起来像一个文本框的框架 - 然后重新设置文本框它没有框架.

如果你想在"文档"中放置一个按钮但不是组合框的良好替代品,那么在富编辑中放置一个按钮是很好的.

请参阅ComboBox控件模板MSDN


Xaa*_*lek 6

简单的解决方案

\n
\n

您可以通过将 Button 放在 TextBox 上来伪造按钮位于 TextBox 中的事实。不要忘记在 TextBox 上添加填充,以避免文本出现在 Button 后面。

\n

StackPanel 的代码示例:

\n
<StackPanel Orientation="Horizontal">\n    <TextBox Width="200" Padding="0,0,30,0" Height="30" FontSize="16"/>\n    <Button Width="20" Height="20" Margin="-30,0,0,0"/>\n</StackPanel>\n
Run Code Online (Sandbox Code Playgroud)\n

网格代码示例:

\n
<Grid>\n    <TextBox Width="200" Padding="0,0,30,0" Height="30" FontSize="16"/>\n    <Button Width="20" Height="20" HorizontalAlignment="Right" Margin="0,0,5,0"/>\n</Grid>\n
Run Code Online (Sandbox Code Playgroud)\n

结果 :

\n

在此输入图像描述

\n


小智 5

我创建了一个文本框控件并添加了它似乎工作,但不是理想的情况因为它重新创建另一个文本框.

<TextBox.Template>
 <ControlTemplate>
        <Grid>
            <Grid.ColumnDefinitions></Grid.ColumnDefinitions>
            <TextBox Grid.Column="0"></TextBox>
            <Button HorizontalAlignment="Right" Width="25" Grid.Column="1">
            </Button>
        </Grid>         
    </ControlTemplate>
</TextBox.Template>
Run Code Online (Sandbox Code Playgroud)


小智 5

您可能会发现此链接有所帮助:http : //msdn.microsoft.com/zh-cn/library/ms752068(VS.85).aspx

“ TextBox的ControlTemplate必须只包含一个标记为内容宿主元素的元素;该元素将用于呈现TextBox的内容。要将某个元素标记为内容宿主,请为其指定特殊名称PART_ContentHost。内容宿主元素必须是ScrollViewer或AdornerDecorator。内容宿主元素不能包含任何子元素。”