- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个小问题,我似乎无法解决。我有一个文本框,我要在其中添加“搜索提示”
我正在使用这个 XAML 代码段
<TextBox x:Name="txtboxSearch" Height="22" Margin="3,35,111,0" TextWrapping="Wrap" VerticalAlignment="Top" BorderThickness="1" MaxLines="1" MaxLength="256" Grid.Column="2" BorderBrush="#FF828790">
<TextBox.Style>
<Style TargetType="TextBox" xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Style.Resources>
<VisualBrush x:Key="CueBannerBrush" AlignmentX="Left" AlignmentY="Center" Stretch="None">
<VisualBrush.Visual>
<TextBox Text="Search" Foreground="LightGray" FontStyle="Italic" />
</VisualBrush.Visual>
</VisualBrush>
</Style.Resources>
<Style.Triggers>
<Trigger Property="Text" Value="{x:Static sys:String.Empty}">
<Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
</Trigger>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter Property="Background" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
因为窗口的背景不是白色,所以我得到的结果如图所示。我尝试以多种不同的方式绑定(bind)宽度,但似乎没有任何效果,您能提出建议吗?
我希望它看起来像这样
谢谢!
最佳答案
执行此操作的方法是将 CueBannerBrush(您的 VisualBrush)中的 TextBox 的宽度绑定(bind)到主 TextBox 父级 (txtboxSearch)。
但是,这仅在将 CueBannerBrush 定义放入控件或窗口资源而不是 TextBox.Style 资源中时有效:
<Window.Resources>
<VisualBrush x:Key="CueBannerBrush" TileMode="Tile" Stretch="None" AlignmentX="Left" AlignmentY="Center" >
<VisualBrush.Visual>
<TextBox
Width="{Binding ElementName=txtboxSearch, Path=ActualWidth}"
HorizontalAlignment="Stretch" x:Name="txtboxWatermark" Text="Search" Foreground="LightGray" FontStyle="Italic"/>
</VisualBrush.Visual>
</VisualBrush>
</Window.Resources>
然后您的主 XAML 完全相同,但没有 VisualBrush 定义。
<Grid Background="Tomato">
<TextBox x:Name="txtboxSearch" Height="22" Margin="3,35,111,0" TextWrapping="Wrap" VerticalAlignment="Top" BorderThickness="1"
MaxLines="1" MaxLength="256" Grid.Column="2" BorderBrush="#FF828790">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<Trigger Property="Text" Value="{x:Static sys:String.Empty}">
<Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
</Trigger>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter Property="Background" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Grid>
现在您首先会看到:
当你在里面点击时:
关于c# - 在 VisualBrush 中绑定(bind)文本框的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30670911/
我正在使用 VisualBrush 拍摄包含 TabControl 的窗口的快照。 快照 #1: 切换到“Dos”(不是 Microsoft),快照 #2: 如果我只拍摄 TabControl 或 D
我有一个 VisualBrush 并且需要这个 VisualBrush 作为绘图。任何人都知道如何做到这一点?感谢您的任何提示! 最佳答案 这是 XAML 版本: ...
我正在开发一个 MUI 风格的 WPF 应用程序。我使用的图标例如:http://modernuiicons.com . 现在,如果我使用以下代码: 为“a
我有一个由 WPF/XAML 中的不同 UserControl 组成的 Canvas 。在其中一个控件中,我有一个区域必须是透明的,以便它后面的元素可见。但是,由于此控件的复杂结构,我不能只将背景设置
我有一个 VisualBrush,我已将 TileMode 属性设置为 Tile。 但是,它不会平铺 - 它会拉伸(stretch)。有人可以帮忙吗? 谢谢
我在“Visual to RenderTargetBitmap”问题上发现了一个新的转折点! 我正在为设计师渲染 WPF 内容的预览。这意味着我需要获取 WPF 视觉对象并将其渲染为位图,而不会显示该
我想将 OpacityMask 设置为控件,但我需要动态构建该 mask 。它应该是这样的: 整个(红色)矩形的宽度和高度是动态的,基于父控件的宽度和高度。但是我需要在左上角和右上角放置两个小矩形(静
我有一个 ListView 来显示附件,每个附件都有一个删除按钮。当我更改列表的 ItemSource 时(即当查看具有不同附件的另一个项目时),删除按钮的图标不再绘制。 这是模板
我需要创建一个 UserControl,它有一部分控件的背景是透明的。透明部分被切割成 Border 的形状,CornerRadius 为 2 -- 这是设计所必需的。 这是我无法运行的代码:
我正在执行一些拖放操作,我想使用我正在拖动的元素的可视副本作为光标。获取元素的 VisualBrush 很容易,但我不知道如何将其变成光标。 我读过 Jamie Rodriguez blog post
来自this问题,我有一个定义如下的文本框:
鉴于此 XAML:
我需要及时拍摄 Control 的快照并将它们存储在一个 FixedDocument 中。问题是 VisualBrush 在某种程度上“懒惰”,并且不会通过将其添加到文档来评估自身。当我最终创建文档时
实际上,我在设计时将一张从资源中获取的图像设置到 xaml 文件中,如下所示:
我有一个矩形,其填充设置为 MahApps.Metro 附带的图标集中的一个图标。 这是代码 在 XAML 设计中,我有一个 URL 框,用于获取用户输入的网址
我有一个缩略图预览,它是通过 VisualBrush 完成的。预览是一个 ItemsControl,它包含其他元素 RichTextBox。 var preview = new VisualBrush
我有一个小问题,我似乎无法解决。我有一个文本框,我要在其中添加“搜索提示” 我正在使用这个 XAML 代码段
是否可以将属性 StretchDirection 添加到 VisualBrush?我的 VisualBrush 包含一个媒体元素,媒体元素有这个属性,但 VisualBrush 没有。当我将 Stre
我有一个视觉画笔,我想在其中将视觉对象设置为一个元素。我的视觉画笔的当前示例: 但是,我想改变Visual中的值,以便在不同的时间,它可以显示不同控件的视觉效果。我的第一个想法是: Visual="
我对视觉画笔(通过 VLC.DotNet 链接到 VLC 播放器)和选项卡控件的组合有一种奇怪的体验。我已经使用 VLC 播放器创建了一个自定义控件来观看 RTSP 流,并且在给定窗口中有多个这样的控
我是一名优秀的程序员,十分优秀!