0
我想创建具有用于描述TextBox值的Text-hint的TextBox。 为此目的我使用VisualBrush TextBlock显示文本框提示当TextBox为空,然后我编码转换器转换为文本框的HorizontalContentAlignment(应用该样式的控件)到AlignmentX意味着,当客观文本框如留下然后VisualBrush显示左对齐TextBlock但这个阴谋不成真。 我怎么能解决这个问题像波纹管:从样式到应用样式的控件的绑定
我的XAML代码:
<Window.Resources>
<local:HorizontalAlignToAlignX x:Key="HAligToXAlig"/>
<Style TargetType="{x:Type TextBox}" xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Style.Resources>
<VisualBrush x:Key="CueBannerBrush"
Stretch="None"
AlignmentX="{Binding HorizontalContentAlignment, Converter={StaticResource HAligToXAlig}}">
<VisualBrush.Visual>
<TextBlock Text="search" Foreground="LightGray"/>
</VisualBrush.Visual>
</VisualBrush>
</Style.Resources>
<Style.Triggers>
<Trigger Property="Text" Value="{x:Static sys:String.Empty}">
<Setter Property="Background" Value="{StaticResource CueBannerBrush}"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<TextBox x:Name="textBox"
TextWrapping="Wrap"
VerticalAlignment="Top"
Width="342"
HorizontalContentAlignment="Right" />
</Grid>
我的转换代码:
class HorizontalAlignToAlignX : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
AlignmentX Align = AlignmentX.Right;
switch ((HorizontalAlignment)value)
{
case HorizontalAlignment.Left:
Align = AlignmentX.Left;
break;
case HorizontalAlignment.Center:
Align = AlignmentX.Center;
break;
case HorizontalAlignment.Right:
Align = AlignmentX.Right;
break;
case HorizontalAlignment.Stretch:
Align = AlignmentX.Center;
break;
default:
break;
}
return Align;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
您是否调试过转换器部件?至少要找到问题.. – Jose
@Kirenenko转换器不会按照BreakPoint运行 – amirhossein