在用 .NET 6 WPF 开发一个自动化翻译的 Windows 客户端软件,需要增加一个下拉控件可以选择 Locale。
WPF 中对应的组件时 ComboBox。与 listbox 的不同之处在于,combobox 是折叠收起的,而 listbox 的是展开显示的。
combobox 贴心之处在于,除了能下拉选择,还能手动输入内容。
CSharp 代码中绑定 dictionary / array
尽管有几种方式可以实现数据的绑定,但是我还是喜欢在 CSharp 代码中绑定,因为比在 XAML 中清晰多了。
注意:如果想在设计器里点来点去实现绑定,需要随时做好应对 VS IDE 卡死的状况。
private Dictionary<string, string> locales = new Dictionary<string, string>
{
{ "af", "afrikaans 南非荷兰语"},
{ "sq", "albanian 阿尔巴尼亚"},
{ "am", "amharic 阿姆哈拉语"},
{ "ar", "arabic 阿拉伯语"},
}
private string[] defaultLocales = {
"zh", "en"
};
public MainWindow()
{
InitializeComponent();
// data binding to dictionary
targetLocaleCB.ItemsSource = locales;
targetLocaleCB.SelectedValuePath = "Key";
targetLocaleCB.DisplayMemberPath = "Value";
// // data binding to array
defaultLocaleCBox.ItemsSource = defaultLocales;
efaultLocaleCBox.SelectedIndex = 0;
}
当下拉选择数据后,获取新值
无论是 dict 还是 array,获取方法都是一样的。
defaultLocale = defaultLocaleCBox.SelectedValue.ToString();
参考
https://learn.microsoft.com/en-us/dotnet/desktop/wpf/data/?view=netdesktop-6.0
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式