DataGridComboBoxColumn 不显示我的集合

本文关键字:集合 我的 显示 DataGridComboBoxColumn | 更新日期: 2023-09-27 18:35:37

我只想做一件简单的事情,我只想在数据网格中的组合框中显示我的版本列表。

"

版本"列显示"集合"...我不知道为什么!

这里是我的 xaml 中的代码:

<DataGrid Name="DataGridTableau"  Grid.Column="0" Grid.Row="0"
                  AutoGenerateColumns="False"
                ScrollViewer.CanContentScroll="True" 
                ScrollViewer.VerticalScrollBarVisibility="Auto"
                ScrollViewer.HorizontalScrollBarVisibility="Auto" CanUserAddRows="True"
                ItemsSource="{Binding }"
            >
            <DataGrid.Columns>
                <DataGridTextColumn Header="Sofware" Width="*" IsReadOnly="True" Binding="{Binding Path=Software}">
                </DataGridTextColumn>
                <DataGridComboBoxColumn Header="Version" Width="*" IsReadOnly="True"
                        ItemsSource="{Binding Path=Versions}">
                </DataGridComboBoxColumn>
            </DataGrid.Columns>
        </DataGrid>

并进入 xaml.cs :

public ObservableCollection<ElementTableau> Elements;
        public VueEtapeSelection()
        {
            InitializeComponent();

            Elements = new ObservableCollection<ElementTableau>();
            List<string> versions = new List<string>();
            versions.Add("3.0");
            versions.Add("3.1");
            Elements.Add(new ElementTableau("Excel", versions));
            this.DataGridTableauEKs.DataContext = Elements;
        }
        public class ElementTableau
        {
            private string sofware;
            public string Software
            {
                get { return software; }
                set { software = value; }
            }
            private List<string> versions;
            public List<string> Versions
            {
                get { return versions; }
                set { versions = value; }
            }
            public ElementTableau(string software, List<string> versions)
            {
                this.software = software;
this.versions=versions
            }
        }

感谢您的帮助!

DataGridComboBoxColumn 不显示我的集合

尝试使用样式设置ItemsSource

<DataGrid.Columns>
    <DataGridTextColumn Header="Sofware" Width="*" IsReadOnly="True" Binding="{Binding Path=Software}" />
    <DataGridComboBoxColumn>
        <DataGridComboBoxColumn.ElementStyle>
            <Style TargetType="{x:Type ComboBox}">
                <Setter Property="ItemsSource" Value="{Binding Path=Versions}" />
            </Style>
        </DataGridComboBoxColumn.ElementStyle>
        <DataGridComboBoxColumn.EditingElementStyle>
            <Style TargetType="{x:Type ComboBox}">
                <Setter Property="ItemsSource" Value="{Binding Path=Versions}" />
            </Style>
        </DataGridComboBoxColumn.EditingElementStyle>
    </DataGridComboBoxColumn>
</DataGrid.Columns>

绑定列的 ItemsSource 属性不起作用,因为它是在没有父 FrameworkElement 的列本身的上下文中计算的。而是使用该样式会在呈现 ComboBox 后立即设置ItemsSource。ComboBox 集成在逻辑树中,可以评估其 DataContext,这就是它工作的原因。

编辑:

要绑定所选项目,请添加一些资源库,如下所示:

<Setter Property="SelectedItem" Value="{Binding Path=SelectedVersion}" />