Как связать перечислитель или переменную с DataGridComboBox в DataGrid в WPF? - PullRequest
0 голосов
/ 24 марта 2011

Я хочу поместить содержимое перечислителя, или некоторый массив строк, или конкретный DataTable в качестве элементов DatagridComboBox, так как я могу связать перечислитель, массив строк или содержимое DataTable с DataGridComboBox?

Например, у меня есть Datatable, который я загружу в DataGrid и свяжу записи с настраиваемыми столбцами, и в зависимости от значения ячейки (из Datatable), когда столбец (в DataGrid) является DataGridComboBox, он будет автоматически выберите соответствующий элемент DataGridComboBox.

Связать столбцы как DataGridTextBox легко, но столбцы как DataGridComboBox, похоже, сбивают с толку.

Моя первая проблема - поместить элементы из (перечислителя, массива строк, таблицы данных или чего-либо еще) в DataGridComboBox, а вторая проблема - выбрать соответствующий элемент при загрузке таблицы данных, содержащей записи в сетку данных.

Заранее спасибо

1 Ответ

2 голосов
/ 24 марта 2011
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"    
    Title="Window1" Height="300" Width="300">
    <StackPanel>

        <toolkit:DataGrid Name="dataGrid" ItemsSource="{Binding Path=.}" AutoGenerateColumns="False">
            <toolkit:DataGrid.Columns>
                <toolkit:DataGridTemplateColumn>
                    <toolkit:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox ItemsSource="{Binding Path=StringArray}" Width="100"
                                      SelectedValue="{Binding Path=SelectedString}" />
                        </DataTemplate>
                    </toolkit:DataGridTemplateColumn.CellTemplate>   
                </toolkit:DataGridTemplateColumn>
            </toolkit:DataGrid.Columns>
        </toolkit:DataGrid>


    </StackPanel>
</Window>

В вашем коде позади:

    namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            ObservableCollection<TestClass> collection = new ObservableCollection<TestClass>();
            collection.Add(new TestClass());
            collection.Add(new TestClass());
            collection.Add(new TestClass());

            dataGrid.DataContext = collection;
        }
    }

    public class TestClass
    {
        private static string[] stringArray = { "Option One", "Option Two", "Option Three" };

        public string[] StringArray
        {
            get
            {
                return stringArray;
            }
        }

        public string SelectedString
        {
            get;
            set;
        }
    }
}

Вам необходимо установить текст данных окна / элемента управления для некоторых данных позади, а затем вы можете использовать свойства этих объектов для привязки ваших элементов управления.

Надеюсь, это поможет

...