Как вы динамически назначаете заголовки сетки данных в c #? - PullRequest
1 голос
/ 02 августа 2011

Как вы динамически назначаете заголовки сетки данных в c #?

Рассмотрим следующий XAML:

        <data:DataGrid  x:Name="dataGrid" AutoGenerateColumns="False"  Margin="1,1,1,1" >
            <data:DataGrid.Columns>
                <data:DataGridTextColumn
                    Header="Substantive"
                    Binding="{Binding Path=Substantive}"
                    IsReadOnly="True"
                    />

                <data:DataGridTextColumn
                    Header=""
                    Binding="{Binding Path=Month[0]}"
                    IsReadOnly="True"
                    />

                <data:DataGridTextColumn
                    Header=""
                    Binding="{Binding Path=Month[1]}"
                    IsReadOnly="True"
                    />

            </data:DataGrid.Columns>

        </data:DataGrid>

В коде C # как определить пустые заголовки?

Хорошо, ну, если никто не знает, давайте перейдем к другому вопросу. Как создать DataGrid с нуля в коде C # вместо XAML?

Ответы [ 4 ]

1 голос
/ 02 августа 2011

Вы можете добавить столбцы к таблице данных как таковые (для текстового столбца):

text2 = new DataGridTextColumn();
bind = new System.Windows.Data.Binding("ValueList");
bind.ConverterParameter = i;
bind.Converter = new IndexConverter();             
text2.Binding = bind;
text2.Header = "Header";
text2.MaxWidth = 100;
....           
datagrid1.Columns.Add(text2);

Вы также можете получить доступ к существующему столбцу через:

((DataGridTextColumn)datagrid1.Columns[i]).Header = "Header";
0 голосов
/ 02 августа 2011

Когда вы используете dataGrid.ItemsSource, ваши заголовки DataGrid будут привязаны к именам переменных в List, который вы используете в качестве ItemsSource.

0 голосов
/ 02 августа 2011

Отвечая на ваш оригинальный вопрос, мне показалось бы, что преобразователь значений сделает эту работу здесь.

public class MyConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
         // Do stuff with parameter, for example:-

         int month = Convert.ChangeType(parameter, typeof(int), culture);
         return cultrue.DateTimeFormat.GetAbbreviatedMonthName(month + 1);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Тогда используйте его в своем xaml: -

     <UserControl.Resources>
          <local:MyConverter x:Key="myconv" />
     </UserControl.Resources>
     ...
        <data:DataGrid  x:Name="dataGrid" AutoGenerateColumns="False"  Margin="1,1,1,1" >
            <data:DataGrid.Columns>
                <data:DataGridTextColumn
                    Header="Substantive"
                    Binding="{Binding Path=Substantive}"
                    IsReadOnly="True"
                    />

                <data:DataGridTextColumn
                    Header="{Binding Converter={StaticResource myconv} ConverterParameter=0}"
                    Binding="{Binding Path=Month[0]}"
                    IsReadOnly="True"
                    />

                <data:DataGridTextColumn
                    Header="{Binding Converter={StaticResource myconv} ConverterParameter=1}"
                    Binding="{Binding Path=Month[1]}"
                    IsReadOnly="True"
                    />

            </data:DataGrid.Columns>

        </data:DataGrid>
0 голосов
/ 02 августа 2011

Не уверен, что именно вам нужно, но:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...