gpt4 book ai didi

c# - 为 Windows 应用商店中的 Combobox SelectedItem 实现双向绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:44 25 4
gpt4 key购买 nike

Windows 应用商店应用程序中的 Combobox 绑定(bind)有一个小问题。它必须绑定(bind)到本地化的枚举值(枚举名称是 BackgroundTrack)。我在 View 模型中有 2 个属性 - 项目列表和选定项目。我使用 Tuple<,> 来保存枚举值及其本地化字符串表示形式。

vm 中所选项目的属性:

public Tuple<BackgroundTrack, String> SelectedBackgroundTrack
{
get
{
return _selectedBackgroundTrack;
}

set
{
if (_selectedBackgroundTrack == null ||
_selectedBackgroundTrack.Equals(value))
{
_selectedBackgroundTrack = value;
_settingsService.BackgroundTrack = value.Item1;
RaisePropertyChanged("SelectedBackgroundTrack");
}
}
}

vm 中项目列表的属性:

public IEnumerable<Tuple<BackgroundTrack, String>> BackgroundTrackList { get; set; }

组合框绑定(bind):

            <ComboBox 
ItemsSource="{Binding Path=BackgroundTrackList}"
SelectedItem="{Binding Path=SelectedBackgroundTrack, Mode=TwoWay}"
Grid.Row="10" ItemTemplate="{StaticResource DataTemplate1}"
/>
<DataTemplate x:Key="DataTemplate1">
<Grid>
<TextBlock Text="{Binding Item2}"/>
</Grid>
</DataTemplate>

View 模型构造函数:

BackgroundTrackList = EnumUtils.GetLiterals<BackgroundTrack>();
SelectedBackgroundTrack = BackgroundTrackList.First(t => t.Item1.Equals(_settingsService.BackgroundTrack));

问题:我在 ViewModel 构造函数中设置所选项目(来自应用程序设置),但此值未显示在组合框中 - 它没有任何选择。如果我在组合框中选择某些内容,则绑定(bind)会正常工作并设置基础 ViewModel 属性。我该如何纠正这个问题?我是否需要以编程方式实现 INotifyPropertyChanged 或推迟所选项目属性的设置?

最佳答案

您需要实现 IEquatable<T>在用于项目的类型上。 Tuple没有。

关于c# - 为 Windows 应用商店中的 Combobox SelectedItem 实现双向绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20652767/

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