c# - 如何在uwp中传递转换器参数中的元素?
问题描述
我必须在 UWP 中传递转换器参数中的元素,如下面的 WPF 代码片段。
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource captionSummaryRowConverter}, ConverterParameter= {x:Reference Name= dataGrid}}" Foreground="Blue" Background="Yellow" FontSize="15"></TextBlock>
</DataTemplate>
由于 x:Reference 关键字在 Uwp 中不可用,是否有任何可能的方法将元素传递给 uwp 中的转换器参数。
解决方案
如何在uwp中传递转换器参数中的元素?
目前,Converter 不支持 pass element ConverterParameter
。我们经常使用它来传递StaticResource
或字符串格式。
<TextBlock Text="{Binding DoubleValue,Converter={StaticResource StringFormatConverter},ConverterParameter='{}{0:N2}'}"/>
或者
<TextBlock Text="Score : 60" Foreground="{Binding Passed,Converter={StaticResource BoolToValueConverter},ConverterParameter={StaticResource PassedBrush},FallbackValue={StaticResource FailedBrush}}"/>
更新
您可以将属性添加到 Converter 并与您的根面板绑定,然后将元素名称作为参数传递给 Converter,调用 FindName 方法来获取元素。
public class ImageConverter : IValueConverter
{
public UIElement UIParameter { get; set; }
public object Convert(object value, Type targetType, object parameter, string language)
{
var rootGrid = UIParameter as Grid;
if(parameter != null)
{
var ele = rootGrid.FindName(parameter.ToString());
}
return value;
}
}
用法
<local:ImageConverter x:Key="ImageConverter" UIParameter="{x:Bind RootGrid}" />
</Page.Resources>
<Grid x:Name="RootGrid">
<TextBlock x:Name="TestBlock" Text="Hello" />
<Image Source="{Binding Converter={StaticResource ImageConverter}, ConverterParameter='TestBlock'}" />
<ComboBox
推荐阅读
- node.js - 编辑组件 html 时 Angular CLI 不会重新加载?
- algorithm - 无法计算以下算法的时间复杂度
- python - 最后一行代码是什么意思,x1[ x1[:,1]>3 ]
- c# - 如何在 C# 中正确处理第三方对象(TelegramBotClient)
- excel - 合并重复记录,然后使用 vlookup 从另一张表中提取数据
- ios - ViewControllers 之间的延迟自定义转换
- java - 将用户输入转换为字符串,遇到多个字母的问题
- javascript - 来自javascript的字符串“true”在php中未被识别为该字符串值
- algorithm - 最大化数组中之字形序列的数量
- asp.net - 条纹购买在本地工作正常,主机超时(1&1)