XAML绑定到一个转换器 [英] XAML Binding to a converter
问题描述
我所试图做的是比较简单的。我只是想一个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屋!