gpt4 book ai didi

wpf - 组合框的静态数量的 XAML 控件数组

转载 作者:行者123 更新时间:2023-12-02 08:52:45 28 4
gpt4 key购买 nike

我想要一个 wpf 表单上包含 10 个组合框的数组。

组合框的 ItemsSource 是相同的 - 可选项目的 ObservableCollection。

每个 Selected Item 将绑定(bind)到不同 ObservableCollection 中的一个项目,富有想象力地称为“SelectedItems”..

做数组最好的方法是什么?我当然可以有 10 个单独的组合框,但这不是很优雅..

我不认为 ItemsControl 模板是我想要的,因为组合框的数量是静态的。

谢谢

最佳答案

如果我没理解错的话,你有 10 个具有相同项目列表但不同数据源的组合框

在那种情况下,我可以为 ComboBox 创建一个通用样式,它设置通用属性,例如 ItemsSource(如果所有项目的绑定(bind)都相同,则为 SelectedItem ),然后根据需要实际在表单上创建单独的 ComboBox。

<StackPanel>
<StackPanel.Resources>
<Style TargetType="{x:Type ComboBox}">
<!-- Set the binding to wherever your ItemsSource resides. In this
case,I'm binding to a static class called Lists and a static
property called ComboBoxItems -->
<Setter Property="ItemsSource"
Value="{Binding Source={x:Static local:Lists.ComboBoxItems}}" />

<!-- Only use this setter if your binding is the same everywhere -->
<Setter Property="SelectedItem" Value="{Binding SelectedItem}" />
</Style>
</StackPanel.Resources>

<ComboBox DataContext="{Binding Item1}" />
<ComboBox DataContext="{Binding Item2}" />
<ComboBox DataContext="{Binding Item3}" />
<ComboBox DataContext="{Binding Item4}" />
<ComboBox DataContext="{Binding Item5}" />
<ComboBox DataContext="{Binding Item6}" />
<ComboBox DataContext="{Binding Item7}" />
<ComboBox DataContext="{Binding Item8}" />
<ComboBox DataContext="{Binding Item9}" />
<ComboBox DataContext="{Binding Item10}" />
</StackPanel>

当然,如果您的 ComboBox 的 DataSource 可以放在一个集合中,最好是它们,并且您使用 ItemsControl 来显示 ComboBox

<ItemsControl ItemsSource="{Binding SelectedItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding }"
ItemsSource="{Binding Source={x:Static local:Lists.ComboBoxItems}}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

关于wpf - 组合框的静态数量的 XAML 控件数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7350868/

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