XAML绑定到一个转换器 [英] XAML Binding to a converter

查看:285
本文介绍了XAML绑定到一个转换器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我所试图做的是比较简单的。我只是想一个TranslateTransform的Y元素绑定在一个椭圆1/2椭圆的高度:

what I am trying to do is relatively simple. I am just trying to bind the Y element of a TranslateTransform on an ellipse to 1/2 the height of the ellipse:

    <Ellipse Name="EllipseOnlyLFA" Height="200" Fill="Yellow" HorizontalAlignment="Left" VerticalAlignment="Bottom" ClipToBounds="True">
        <Ellipse.Width>
            <Binding ElementName="EllipseOnlyLFA" Path="Height"/>
        </Ellipse.Width>
        <Ellipse.RenderTransform>
            <TranslateTransform>
                <TranslateTransform.Y>
                    <Binding Converter="MultiplyByFactor" ElementName="EllipseOnlyLFA" Path="Height"  ConverterParameter="0.5"/>
                </TranslateTransform.Y>
            </TranslateTransform>
        </Ellipse.RenderTransform>
    </Ellipse>



我也有以下转换器:

I also have the following converter:

public class MultiplyByFactor : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return ((double)value * (double)parameter);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return true;
    }
}



我在XAML线得到一个错误,我实际使用的转换器。该错误是

I am getting an error on the XAML line where I actually use the converter. The error is

设置属性
'System.Windows.Data.Binding.Converter'
抛出一个异常。'行号'22'
和线位8。

'Set property 'System.Windows.Data.Binding.Converter' threw an exception.' Line number '22' and line position '8'.

任何人都可以阐明如何做一些轻这个? 编辑:是的,我已经转换器作为资源添加

Can anyone shed some light on how to do this? Yes, I have the converter added as a resource.

推荐答案

有2件事错了与您的代码

There are 2 thing wrong with your code

1)你的转换器需要使用静态资源声明进行访问

1) your converter needs to be accessed using the StaticResource declaration

<Binding Converter="{StaticResource myMultiplyByFactor}" 
    ElementName="EllipseOnlyLFA" Path="Height"  ConverterParameter="0.5"/

2)你的转换参数是一个字符串默认情况下,所以你需要将其转换为一个双

2) Your converter parameter is a string by default, so you need to convert it to a double

public object Convert(object value, Type targetType, 
    object parameter, CultureInfo culture)
{
    var p = double.Parse((string)parameter);
    return ((double)value * p);

这篇关于XAML绑定到一个转换器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆