wpf DataGrid 内容绑定动态资源方法

  先讲故事:系统需要区分语言环境,有中文环境与英文环境。然后有一列用户角色列,用户分为管理员(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>

posted on 2024-12-28 19:19  金宝的博客  阅读(114)  评论(0)    收藏  举报

导航