如何在 AdornedElementPlaceholder 上使用 TextTrimming 获取 Textblock?
Posted
技术标签:
【中文标题】如何在 AdornedElementPlaceholder 上使用 TextTrimming 获取 Textblock?【英文标题】:How to get Textblock with TextTrimming over an AdornedElementPlaceholder? 【发布时间】:2011-10-24 09:11:22 【问题描述】:如果用户尚未指定值,我正在尝试获取 ValidationRule 以在有问题的组合框上显示文本。我可以让它显示,但我似乎无法使用 TextTrimming="CharacterEllipsis" 使文本适合组合框的大小。我怎样才能让 TextBlock 适合组合框,并且如果用户调整窗口大小也可以更正自己?
这是我的 MainWindow.xaml:
<Window x:Class="PocAdornedElementPlaceholder.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:PocAdornedElementPlaceholder"
Title="MainWindow" Height="200" Width="150">
<Window.Resources>
<ControlTemplate x:Key="ValidationTemplate">
<Grid HorizontalAlignment="Center">
<AdornedElementPlaceholder/>
<TextBlock Foreground="Red"
TextTrimming="CharacterEllipsis"
Text="Binding ErrorContent"
IsHitTestVisible="False"
VerticalAlignment="Center"
Margin="5,0,0,0"/>
</Grid>
</ControlTemplate>
</Window.Resources>
<Grid>
<ComboBox Margin="10"
Validation.ErrorTemplate="StaticResource ValidationTemplate"
VerticalAlignment="Center"
ItemsSource="Binding Options">
<ComboBox.Text>
<Binding Path="SelectedValue">
<Binding.ValidationRules>
<local:MyValidationRule ValidatesOnTargetUpdated="True" />
</Binding.ValidationRules>
</Binding>
</ComboBox.Text>
</ComboBox>
</Grid>
</Window>
这是我的 MainWindow.xaml.cs:
public partial class MainWindow : Window
public MainWindow()
InitializeComponent();
Options = new List<string>() "Value 1", "Value 2", "Value 3", "" ;
this.DataContext = this;
public string SelectedValue get; set;
public List<string> Options get; set;
这是我的 MyValidationRule.cs 文件:
public class MyValidationRule : ValidationRule
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
if (string.IsNullOrEmpty((string)value))
return new ValidationResult(false, "Value cannot be empty!");
return new ValidationResult(true, null);
任何帮助将不胜感激! 谢谢, 谭
【问题讨论】:
【参考方案1】:试试下面,TextBlock 应该是装饰器的内容。我还必须更改文本块的边距以计算下拉箭头按钮。
<ControlTemplate x:Key="ValidationTemplate">
<Grid HorizontalAlignment="Center">
<AdornedElementPlaceholder>
<TextBlock Foreground="Red" TextTrimming="CharacterEllipsis" Text="Binding ErrorContent" IsHitTestVisible="False" VerticalAlignment="Center" Margin="5,0,20,0" />
</AdornedElementPlaceholder>
</Grid>
</ControlTemplate>
【讨论】:
太棒了!非常感谢!以上是关于如何在 AdornedElementPlaceholder 上使用 TextTrimming 获取 Textblock?的主要内容,如果未能解决你的问题,请参考以下文章
如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?