dpa*_*ker 43 .net xaml binding converter silverlight-4.0
是否可以绑定到Silverlight 4.0中的ConverterParameter?
例如,我想做类似的事情,并将ConverterParameter绑定到ViewModel中的对象.
如果不可能,还有其他选择吗?
<RadioButton
Content="{Binding Path=Mode}"
IsChecked="{Binding
Converter={StaticResource ParameterModeToBoolConverter},
ConverterParameter={Binding Path=DataContext.SelectedMode,ElementName=root}}"
/>
Run Code Online (Sandbox Code Playgroud)
Joe*_*ide 54
不幸的是,你无法绑定到ConverterParameter.我过去使用了两个选项:不是使用Converter,而是在ViewModel上创建一个属性(或者你绑定的任何属性),为你进行转换.如果您仍想转换路径,将整个绑定对象传递给转换器,然后您可以这样进行计算.
小智 20
另一个选择是通过创建一个包装其他转换器并从属性传入转换器参数的自定义转换器来获得乐趣.只要此自定义转换器继承DependencyObject并使用DependencyProperty,就可以绑定它.例如:
<c:ConverterParamHelper ConverterParam="{Binding ...}">
<c:ConverterParamHelper.Converter>
<c:RealConverter/>
</c:ConverterParamHelper.Converter>
</c:ConverterParamHelper>
Run Code Online (Sandbox Code Playgroud)
Ada*_*ski 17
我知道这是一个老问题,但也许这对遇到它的人有用.我找到的解决方案如下:
public class WattHoursConverter : FrameworkElement, IValueConverter
{
#region Unit (DependencyProperty)
/// <summary>
/// A description of the property.
/// </summary>
public string Unit
{
get { return (string)GetValue(UnitProperty); }
set { SetValue(UnitProperty, value); }
}
public static readonly DependencyProperty UnitProperty =
DependencyProperty.Register("Unit", typeof(string), typeof(WattHoursConverter),
new PropertyMetadata("", new PropertyChangedCallback(OnUnitChanged)));
private static void OnUnitChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((WattHoursConverter)d).OnUnitChanged(e);
}
protected virtual void OnUnitChanged(DependencyPropertyChangedEventArgs e)
{
}
#endregion
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// you can use the dependency property here
...
}
}
Run Code Online (Sandbox Code Playgroud)
在你的xaml中:
<UserControl.Resources>
<converters:WattHoursConverter x:Key="WattHoursConverter" Unit="{Binding UnitPropFromDataContext}"/>
</UserControl.Resources>
....
<TextBlock Grid.Column="1" TextWrapping="Wrap" Text="{Binding TotalCO2, Converter={StaticResource KgToTonnesConverter}}" FontSize="13.333" />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
31627 次 |
最近记录: |