我没有想出一个解决方案,一个干净的和可恢复的代码绑定一个枚举到一个组合框在WinUi3。
我有一个通用类,它包含我的项目的所有枚举,其中我有以下代码:
public class Enums
{
public enum ViewMode
{
[Display(Name = "Come nel dispositivo")]
AsDevice,
[Display(Name = "Chiaro")]
Light,
[Display(Name = "Scuro")]
Dark
}
}
在ViewModel文件中,我有这样的代码:
private IList<Enums.ViewMode> _viewsMode = Enum.GetValues(typeof(Enums.ViewMode)).Cast<Enums.ViewMode>().ToList();
public IList<Enums.ViewMode> ViewsMode => _viewsMode;
public Enums.ViewMode ViewMode
{
get { return _model.ViewMode; }
set
{
if (_model.ViewMode != value)
{
_model.ViewMode = value;
RaisePropertyChanged();
UpdateCommand.RaiseCanExecuteChanged();
}
}
}
最后,在xaml文件中,我有这样的代码:
<ComboBox Width="160" ItemsSource="{x:Bind ViewModel.ViewsMode}" SelectedItem="{x:Bind ViewModel.ViewMode,Mode=TwoWay}"/>
到目前为止一切顺利,它工作完美。但它显示“AsDevice”或“Light”或“Dark”,而我想显示DisplayName属性为“Come nel dispositivo”或“Chiaro”或“Scuro”,我该如何做到这一点?谢谢大家
1条答案
按热度按时间qjp7pelc1#
您可以使用
ValueConverter
来执行此操作:然后像这样使用它: