例如:WPF/Silverlight的:我可以很容易地修改,我绑定的属性?
Width={Binding MyWidth}
我想要做的:
Width={Binding MyWidth/2}
这不工作...我不知道是否有这样做的容易方式。 (无需编写一个转换器,并在不改变或创建一个新属性)
注意:不一定是宽..我一般
感谢
谈论性例如:WPF/Silverlight的:我可以很容易地修改,我绑定的属性?
Width={Binding MyWidth}
我想要做的:
Width={Binding MyWidth/2}
这不工作...我不知道是否有这样做的容易方式。 (无需编写一个转换器,并在不改变或创建一个新属性)
注意:不一定是宽..我一般
感谢
谈论性非也在Silverlight中,您只有那些你写的选项,无论是转换器还是新的属性。
编辑:刚才检查,似乎并不可能,甚至与WPF,使用这篇文章作为参考:http://www.codeproject.com/KB/WPF/WpfDataBinding1.aspx
你就是不行。
你必须写一个valueconverter。你唯一能做的就是使用格式字符串来改变格式。
但你可以写一个多功能转换器,你可以给一个参数 - 它甚至可能是某种脚本你发明,所以你可以使用它的各种场景,喜欢你的部门。
其实我不得不做此前不久。像符文说的,我需要写一个转换器。如果你愿意,你可以使用我的。
用法示例:这里
Width="{Binding Width, Converter={StaticResource DoubleOffsetConverter}, ConverterParameter=50%}"
而且,是转换器。你的问题好像你只需要单向转换,虽然我不觉得这是太难以实现ConvertBack如果有必要,使其双向的。
public class DoubleOffsetConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
double valueDouble = System.Convert.ToDouble(value);
if (parameter != null)
{
string paramString = parameter.ToString();
double paramDouble;
if (paramString.EndsWith("%"))
{
//
// Multiply by the percentage.
//
if (double.TryParse(paramString.Substring(0, paramString.Length - 1), out paramDouble))
{
return valueDouble * paramDouble/100.0;
}
}
else if (double.TryParse(parameter.ToString(), out paramDouble))
{
//
// Add the offset.
//
return valueDouble + paramDouble;
}
}
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
取决于其他因素,scaletransform可能是一个选项 – agradl 2011-03-23 18:11:20
哦,我多么希望这是可能的! :d – Laith 2011-03-23 22:26:11