WPF中如何将公共属性作为ConverterParameter传入转换器?
如何将ViewerStatisticsTT的Antani属性作为ConvertParameter传入FormatValues转换器?
要实现这个需求,你只需要修改TextBlock的绑定表达式,通过相对源绑定找到父级的ViewerStatisticsTT控件,再把它的Antani属性作为ConverterParameter传入即可。具体步骤如下:
修改XAML中的绑定代码
找到绑定ChartPoint.Y的TextBlock,更新它的Text绑定,添加ConverterParameter并绑定到当前ViewerStatisticsTT的Antani属性:
<TextBlock Grid.Column="1" Text="{Binding ChartPoint.Y, Converter={StaticResource FormatValues}, ConverterParameter={Binding RelativeSource={RelativeSource AncestorType={x:Type userControls:ViewerStatisticsTT}}, Path=Antani}}" Margin="2,0" FontFamily="{StaticResource fntRoboto}" />
代码解释
RelativeSource={RelativeSource AncestorType={x:Type userControls:ViewerStatisticsTT}}:告诉绑定系统向上遍历视觉树,找到类型为ViewerStatisticsTT的父控件实例。Path=Antani:指定要绑定的目标属性是该控件的Antani公共属性。- 设置完成后,
FormatValues转换器就能在Convert方法中接收到Antani的当前值(也就是你实例化控件时设置的True)。
在FormatValues转换器中使用参数
在你的转换器类里,记得在Convert方法中处理这个传入的bool参数:
public class FormatValues : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { // 将传入的参数转换为bool类型 if (parameter is bool antaniValue) { // 根据antaniValue的值选择不同的格式化逻辑 var yValue = (double)value; return antaniValue ? $"带小数格式: {yValue:F2}" : $"整数格式: {yValue:F0}"; } // 默认格式化逻辑 return value.ToString(); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }
这样就完成了把ViewerStatisticsTT的Antani属性值传递给FormatValues转换器的需求啦。
内容的提问来源于stack exchange,提问作者John Goodman
相关产品推荐
相关产品推荐

