先讲故事:系统需要区分语言环境,有中文环境与英文环境。然后有一列用户角色列,用户分为管理员(admin)与普通用户(users)。
假设管理员用户角色ID为1,普通用户为2.用户角色编码字段名:UseRoleCode。
当数据加到到DataGrid 之后,这是切换语言,需要根据当前的语言 显示中文或者英文,再不遍历数据的情况下如何实现呢?
<DataGrid>
<DataGridTemplateColumn Width="Auto" >
<DataGridTemplateColumn.Header>
<TextBlock Text="{DynamicResource UserRole}" />
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{DynamicResource admin}"
Visibility="{Binding UseRoleCode,Converter={StaticResource 转换器},ConverterParameter=1}">
</TextBlock>
<TextBlock Text="{DynamicResource CommonUser}"
Visibility="{Binding UseRoleCode,Converter={StaticResource 转换器},ConverterParameter=2}">
</TextBlock>
<!--如果还有其他用户类型继续往下写-->
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid>
转换器代码
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null || parameter == null)
{
return Visibility.Collapsed;
}
else
{
if (value?.ToString() == parameter?.ToString())
{
return Visibility.Visible;
}
else
{
return Visibility.Collapsed;
}
}
}
资源字典部分:
<system:String x:Key="UserRole">用户角色</system:String>
<system:String x:Key="admin">管理员</system:String>
<system:String x:Key="CommonUser">普通用户</system:String>
标签:object,return,UseRoleCode,绑定,Visibility,DataGrid,wpf,parameter From: https://www.cnblogs.com/530263009QQ/p/18637838