gpt4 book ai didi

c# - 如何将两个不同的属性绑定(bind)到两个不同的数据上下文 WPF C#

转载 作者:行者123 更新时间:2023-12-03 10:34:23 27 4
gpt4 key购买 nike

我有一个标准菜单,其中标题绑定(bind)到一个 View 模型中的列表,我想绑定(bind)来自另一个 View 模型的命令。我希望这能够更改应用程序中的语言。我这样定义菜单:

<Menu DockPanel.Dock="Top" DataContext="{Binding MenuViewModel, Mode=OneWay, Source={StaticResource mainViewModel}}">

其中 MenuViewModel 包含所有命令,另一个名为 LanguageViewModel 的 View 模型包含所有标题。然后我必须像这样定义每个 MenuItem:
            <MenuItem Command="{Binding Path=NewProjectCommand}">
<MenuItem.Header>
<Label DataContext="{StaticResource languageViewModel}" Content="{Binding Path=Names[menu.project.addnode]}" />
</MenuItem.Header>
</MenuItem>

这意味着一个菜单项至少需要 5 行代码,并且菜单可能包含超过 30 个菜单项......
有没有更简单的方法来做到这一点?我在考虑模板,但不知道我会怎么做。

最佳答案

如果 menu.project.addnode是一个字符串键,以下对我有用:

<MenuItem 
Command="{Binding NewProjectCommand}"
Header="{Binding Names[menu.project.addnode], Source={StaticResource languageViewModel}"
/>

这是我用于本地化字符串的快速测试 VM:
public class LanguageViewModel
{
public Dictionary<string, string> Names { get; } = new Dictionary<string, string>
{
{ "menu.project.addnode", "Add New Node" }
};
}

关于c# - 如何将两个不同的属性绑定(bind)到两个不同的数据上下文 WPF C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38791184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com