Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Data Grid помогите сделать Binding


Автор: W1zArD 6.2.2010, 13:13
Добрый день, возникли вопрос касательно WPF, а именно:

у меня есть объект вида:
Код

using System.Drawing;

namespace WpfApplication1
{
    public class Record
    {
        public string Key;
        public Color Value;
        
        public Record(string key, Color value)
        {
            Key = key;
            Value = value;
        }
    }
}


и его коллекция, т.е.:
Код

public class RecordCollection:List<Record> { }


так же имеется xaml код:
Код

    <Window.Resources>
        <a:RecordCollection x:Key="collection" />
    </Window.Resources>
    
    <DataGrid Name="grid" SourceUpdated="DataView_SourceUpdated" DataContext="{DynamicResource ResourceKey=collection}" ItemsSource="{Binding}" IsReadOnly="True" MouseDoubleClick="DataGrid_MouseDoubleClick">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Цвет" Foreground="{Binding Path=Value}" />
            <DataGridTextColumn Header="Описание" Binding="{Binding Path=Key}" />
        </DataGrid.Columns>
    </DataGrid>
</Window>


код формы и обработчиков событий:
Код

private RecordCollection Records = new RecordCollection();

        public MainWindow()
        {
            InitializeComponent();
            Resources.Remove("collection");
            Resources.Add("collection", Records);
            Records.Add(new Record("t1", Color.AliceBlue));
            Records.Add(new Record("t2", Color.Gold));
            Records.Add(new Record("t3", Color.DarkCyan));
        }

        private void DataView_SourceUpdated(object sender, System.Windows.Data.DataTransferEventArgs e)
        {
            //Что тут требуется сделать, чтобы содержимое контрола обновилось?
        }

        private void DataGrid_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            if (grid.SelectedItem != null)
            {
                var a = ((Record) grid.SelectedItem);
                MessageBox.Show(string.Format("{0} : {1}", a.Value.ToString(), a.Key));
            }
        }


данным кодом пытаюсь отобразить в 1-й колонке цвет, во 2-й колонке сопутствующий текст.
сейчас это выглядит вот так:
user posted image

почему не отображается даже текст?

Автор: W1zArD 7.2.2010, 15:33
Все, по поводу обновления данных разобрался.

Но вопрос по поводу отображения остался актуальным

Автор: Hashashin 9.2.2010, 17:30
У меня вот так биндинг колонок 
Код

<DataGridTextColumn Binding="{Binding Path=Name}" ClipboardContentBinding="{x:Null}" Header="Header" />

Автор: W1zArD 10.2.2010, 09:22
попробовал, не помогло :(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)