it鸟 2024-06-22 22:15 采纳率: 80%
浏览 38
已结题

如何用字典的Key,显示在WPF的xaml中

最近做一个WPF的项目。
需要把xaml和cs中部分中文翻译成西班牙文。
1.有尝试用资源文件/资源字典方式,发现系统框架原因,程序绕过了App.xaml(cs). 此路肯定走不通。
2.现在想尝试用字典的方式来做,但是不知道字典的Key怎么跟xaml的label做绑定。请帮助!
(1) 定义字典:

img

//中文
        private Dictionary<string, string> viewDisplayNameZH = new Dictionary<string, string>
        {
            { "ProdLine", "生产线" },
            { "WO", "工单" },
        };
        //西班牙文
        private Dictionary<string, string> viewDisplayNameSP = new Dictionary<string, string>
        {
            { "ProdLine", "Linea de Produccion" },
            { "WO", "Orden de produccion" },
        };
(2 )字典的value 如何显示xaml的label中呢?

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/56f13140cd6a4a398e7fac8f89dd1254.png "#left")

```c#
   <Label  
                        Name="Prod_Line"
                        HorizontalAlignment="Left"
                        Content="1"                        
                        FontSize="20"
                        Foreground="White" Margin="0,0,0,2" />

3)home.cs中还有部分中文,应该如何显示字典的value呢?

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/d86f437ecef74246855667bde5bb8aee.png "#left")

```c#
 var plannedCompletionSeries = new ColumnSeries
            {
                Title = "实际产出(Actual Output)",
                Values = new ChartValues<int>(productionDatas.Select(d => d.PlannedCompletion)),
                DataLabels = true,
                LabelPoint = point => point.Y.ToString(),
                FontFamily = new System.Windows.Media.FontFamily("Arial"),               
                Fill = Brushes.Orange,
                FontSize = 10,
                Foreground = System.Windows.Media.Brushes.White // 字体颜色
            };

  • 写回答

24条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-22 22:15
    关注
    获得0.30元问题酬金

    引自免费微信小程序:皆我百晓生

    在WPF项目中,你可以通过绑定数据源的方式将字典的Key或Value显示在xaml的Label中。以下是一些步骤和示例代码:

    (1)字典的Key和Value如何在xaml中显示

    假设你已经在C#代码中定义了一个字典 viewDisplayNameZHviewDisplayNameSP,你可以在你的XAML中通过绑定数据源的方式将字典的值显示在Label中。首先,你需要在你的ViewModel中创建一个属性来公开这个字典,然后将其绑定到XAML中的Label的Content属性。

    在你的ViewModel中(假设是MainViewModel):

    public Dictionary<string, string> ViewDisplayNameZH { get; set; } = new Dictionary<string, string>
    {
        { "ProdLine", "生产线" },
        { "WO", "工单" }
    };
    
    public Dictionary<string, string> ViewDisplayNameSP { get; set; } = new Dictionary<string, string>
    {
        { "ProdLine", "Linea de Produccion" },
        { "WO", "Orden de produccion" }
    };
    

    然后在XAML中,你可以这样绑定Label的Content属性到你的ViewModel中的属性:

    <Label Name="ProdLineLabel" Content="{Binding ViewDisplayNameZH['ProdLine']}" />
    <Label Name="WOLabel" Content="{Binding ViewDisplayNameZH['WO']}" />
    

    或者如果你想要显示西班牙文版本:

    <Label Name="ProdLineLabelES" Content="{Binding ViewDisplayNameSP['ProdLine']}" />
    <Label Name="WOLabelES" Content="{Binding ViewDisplayNameSP['WO']}" />
    

    确保你的ViewModel已经被设置为了DataContext,这样XAML才能找到要绑定的属性。这通常是在你的View的构造函数中完成的,例如:

    public HomeView()
    {
        InitializeComponent();
        DataContext = new MainViewModel(); // 确保设置了ViewModel为DataContext
    }
    

    (2)如何引用字典的Value并显示在XAML中Label里具体的例子和场景解决方案: 后续再详谈这部分。根据你的描述,你可能需要为每个需要显示的Label创建一个数据绑定的例子。我会在后续的解答中给出具体的代码示例和解决方案。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月30日
  • 创建了问题 6月22日