繁体   English   中英

WPF样式的访问元素

[英]Access element from style WPF

我有一个像这样在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属性,但无法弄清楚绑定的外观。

尝试这个。

 <TranslateTransform X="{Binding RelativeSource={RelativeSource Self}, 
                          Path=ActualWidth,                                              
             Converter={StaticResource DoubleMultiplierConverter}, 
             ConverterParameter=-0.5}" 
                     Y="-62">
 </TranslateTransform>

绑定缺少适当的源对象。 要绑定到TextBlock的ActualWidth属性,您应该像这样设置RelativeSource

<Style x:Key="MapMarkerLabelStyle" TargetType="TextBlock">
    <Setter Property="RenderTransform">
        <Setter.Value>
            <TranslateTransform
                X="{Binding Path=ActualWidth,
                            RelativeSource={RelativeSource AncestorType=TextBlock}
                            Converter={StaticResource DoubleMultiplierConverter}, 
                            ConverterParameter=-0.5}" 
                Y="-62"/>
        </Setter.Value>
    </Setter>
</Style>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM