Проблема с пользовательским DataTemplate, написанным в чистом коде C # - PullRequest
3 голосов
/ 08 апреля 2011

У меня есть этот кусок кода XAML:

 <DataTemplate x:Key="detailsCellTemplate">
        <StackPanel>

            <TextBlock Padding="3, 5, 3, 2" HorizontalAlignment="Left" FontWeight="DemiBold">
                <TextBlock.Text>
                    <Binding Path="client_title" />
                </TextBlock.Text>
            </TextBlock>

            <TextBlock Padding="3, 0, 3, 5" HorizontalAlignment="Left">
                <TextBlock.Text>
                    <Binding Path="client_subtitle" />
                </TextBlock.Text>
            </TextBlock>

        </StackPanel>
    </DataTemplate>

, представляющий шаблон данных для ячейки GridColumn, переведенный в чистый код C # (более или менее) следующим образом:

FrameworkElementFactory stackPanelFactory = new FrameworkElementFactory(typeof(StackPanel));
        stackPanelFactory.SetValue(StackPanel.OrientationProperty, Orientation.Vertical);

        FrameworkElementFactory title = new FrameworkElementFactory(typeof(TextBlock));
        title.SetBinding(TextBlock.TextProperty, new Binding("client_title"));
        title.SetValue(TextBlock.ForegroundProperty, Brushes.Black);
        title.SetValue(TextBlock.VisibilityProperty, Visibility.Visible);
        stackPanelFactory.AppendChild(title);

        FrameworkElementFactory subTitle = new FrameworkElementFactory(typeof(TextBlock));
        title.SetBinding(TextBlock.TextProperty, new Binding("client_subtitle"));
        stackPanelFactory.AppendChild(subTitle);

        VisualTree = stackPanelFactory;

и назначен элементу управления ListView с помощью этой инструкции: gridColumn.CellTemplate = new TitleCellTemplate();, на ранее добавленном DataContext, извлеченном из набора данных mysql. Набор данных без ошибок связывается с ListView, но все строки в сетке белые, как будто у них нет стиля или чего-то еще.

Где может быть ошибка?

1 Ответ

1 голос
/ 08 апреля 2011

Я думаю, что это обязательный вопрос. Вам необходимо установить свойство Source ваших привязок.

См. Создание привязки в коде на MSDN.

...