WPF DataTemplateColumn обращается к DataTemplate и устанавливает ItemsSource - PullRequest
0 голосов
/ 12 октября 2010

Я знаю, странно, что я делаю, но я хочу, чтобы это сработало. Я иду не так, как я чувствую.

У меня есть DataTemplate, определенный в моих ресурсах следующим образом:

  <UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="../ParameterEditorResourceDictionary.xaml"></ResourceDictionary>
            <ResourceDictionary>

                <DataTemplate x:Key="ParameterDefault">
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="("></TextBlock>
                        <ItemsControl ItemsSource="{//I need to set from code}">
                            //some code here
                        </ItemsControl>
                        <TextBlock Text=")"></TextBlock>
                    </StackPanel>
                </DataTemplate>

          </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>       
</UserControl.Resources>

В моем xaml определен DataGrid, в котором есть загруженное событие.

 <cc:PEDataGrid AutoGenerateColumns="False"
               Loaded="CommonPEGrid_Loaded">        
</cc:PEDataGrid>

В моем коде обработчика событий я хочу установить ItemsSource of ItemsControl, определенный в моем DataTemplate. Мой код выглядит следующим образом:

private void CommonPEGrid_Loaded(object sender, RoutedEventArgs e)
    {
        int i = 0;
        DataGrid dg = sender as DataGrid;

        DataGridTemplateColumn column = null;

        //ParametersAllLoops is a ObservableCollection

        foreach (ParameterLoop obj in ParametersAllLoops)
        {
            column = new DataGridTemplateColumn();
            column.Header = "Loop ( " + i.ToString() + " )";

            DataTemplate dt = null;

            //Here I want to write code
            //I want to access the DataTemplate defined in resources 
            //and set the ItemsSource of ItemsControl to something like this
            // xxx.ItemsSource = obj; and then assign the DataTemplate to 
            //the CellTemplate of column.
            //**Note :: ParameterLoop object has the IList Parameters**


            column.CellTemplate = dt;

            dg.Columns.Add(column);
            i++;            
        }
}

1 Ответ

0 голосов
/ 12 октября 2010

Вы можете найти ресурс с помощью метода FindResource () и привести его к DataTemplate, но для присвоения ему ItemSource вам потребуется манипулирование строками.

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

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