gpt4 book ai didi

c# - 如何将 "Clear"按钮添加到 WPF 中的文本框?

转载 作者:太空狗 更新时间:2023-10-29 21:39:54 24 4
gpt4 key购买 nike

我正在为我的 WPF 应用程序开发一个控件,我希望在其中的 TextBox 中有一个 ButtonButton 将包含一个随鼠标悬停而改变的图像,但我已经知道如何执行该部分。我遇到的问题实际上是在 TextBox 中包含 Button ,这样它只占用与图像一样多的空间并且是透明的。以下是我到目前为止尝试过的标记:

XAML:

<Grid>
<TextBox x:Name="SearchBoxView" HorizontalAlignment="Right" Width="200" Margin="5, 5, 10, 5" FontSize="16" KeyUp="SearchBoxKeyDown" Text="{Binding SearchText, Mode=TwoWay}" Grid.Column="0"/>
<Button Background="Transparent" HorizontalAlignment="Right" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
<Button.Content>
<Image Source="Image.png" Stretch="None" RenderOptions.BitmapScalingMode="NearestNeighbor" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Button.Content>
</Button>
</Grid>

我一直在关注这个问题:How to implement a textbox with a clear button in wpf? ,也链接到这篇文章:WPF Search Text Box .问题中建议的 XAML 不起作用,我认为这是因为他们使用的 Style ,我无权访问。这篇文章提供了太多信息,主要讨论了在鼠标悬停时更换搜索和删除图标所需的触发器和依赖属性。因此,我寻求帮助以找到一个简单的解决方案来实现这一目标。谢谢!

编辑:我听从了答案的建议,我能够正确设置按钮的样式,但它仍然不会显示在文本框中,如果显示,文本仍然在其下方运行。我包含了 XAML 和正在发生的事情的图片:

XAML:

<Grid Margin="5, 5, 10, 5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="SearchBoxView" HorizontalAlignment="Right" Width="200" FontSize="16" KeyUp="SearchBoxKeyDown" Text="{Binding SearchText, Mode=TwoWay}" Grid.Column="0"/>
<Button Background="{Binding Backgound, ElementName=SearchBoxView}" HorizontalAlignment="Right" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Click="SearchBoxViewButtonClick" Grid.Column="1">
<Button.Template>
<ControlTemplate>
<Border HorizontalAlignment="Center" VerticalAlignment="Center">
<Image Source="Image.png" Width="12" Height="12"/>
</Border>
</ControlTemplate>
</Button.Template>
</Button>
</Grid>

图片:

Searchbox w/ Button

最佳答案

指定Button模板,而不是内容

<Button>
<Button.Template>
<ControlTemplate>
<Border HorizontalAlignment="Center" VerticalAlignment="Center" >
<Image Source="pack://application:,,,/Organizr;component/DataLayer/Images/ActiveDeleteIcon.png"
Width="16"
Height="16"/>
</Border>
</ControlTemplate>
</Button.Template>
</Button>

编辑

顺便说一句,在您的情况下,图像将覆盖 TextBox 和输入的文本。我建议将此控件放在网格的不同列中,如下所示

<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="SearchBoxView"
HorizontalAlignment="Right"
Width="200" Margin="5, 5, 10, 5"
FontSize="16"
KeyUp="SearchBoxKeyDown"
Text="{Binding SearchText, Mode=TwoWay}"
Grid.Column="0"/>

<Button
Grid.Column="1"
Background="Transparent"
HorizontalAlignment="Right"
HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
<ControlTemplate>
<Border HorizontalAlignment="Center" VerticalAlignment="Center" >
<Image Source="pack://application:,,,/Organizr;component/DataLayer/Images/ActiveDeleteIcon.png"
Width="16"
Height="16"/>
</Border>
</ControlTemplate>
</Button.Template>
</Button>

关于c# - 如何将 "Clear"按钮添加到 WPF 中的文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18235010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com