【发布时间】:2017-05-04 08:29:55
【问题描述】:
我有一个像这样在 ResourceDictionary 中声明的样式。
<Style x:Key="MapMarkerLabelStyle" TargetType="{x:Type TextBlock}">
<Setter Property="RenderTransform">
<Setter.Value>
<TranslateTransform X="{Binding ActualWidth,
Converter={StaticResource DoubleMultiplierConverter},
ConverterParameter=-0.5}"
Y="-62"></TranslateTransform>
</Setter.Value>
</Setter>
</Style>
还有文本块
<TextBlock Style="{StaticResource MapMarkerLabelStyle}" />
还有转换器:
public class DoubleMultiplierConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var originalValue = (double) value;
var format = new NumberFormatInfo {NumberDecimalSeparator = "."};
var multiplier = System.Convert.ToDouble(parameter, format);
return originalValue * multiplier;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
在翻译转换中,我需要访问 textblock ActualWidth 属性,但无法弄清楚绑定的外观。
【问题讨论】:
-
显然您正试图将 TextBlock 置于给定位置的中心。将 HorizontalAlignment 设置为 Center 不起作用吗?
-
将 TranslateTransform 设置为 TextBlock 居中可能不是最好的方法。将 TextBlock 居中放置在一个固定大小的居中 Panel 中,让 WPF 布局来完成这项工作怎么样?