c# - 用纯 C# 代码编写的自定义 DataTemplate 的问题

标签 c# .net wpf binding wpfdatagrid

我有这段 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 单元格的 DataTemplate,以这种方式(或多或少)翻译成纯 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();,在先前添加的从 mysql 数据集中提取的 DataContext 上。 数据集与 ListView 的绑定(bind)没有错误,但网格中的所有行都是白色的,就像它们没有样式或其他东西一样。

哪里会出错?

最佳答案

我认为这是一个有约束力的问题。您需要设置绑定(bind)的 Source 属性。

参见 Creating a binding in code在 MSDN 上。

关于c# - 用纯 C# 代码编写的自定义 DataTemplate 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5592227/

相关文章:

c# - 如何在 WebBrowser 控件中注入(inject) Javascript?

c# - 当它被抛出并被捕获时,不要在那个异常处停止调试器

c# - 如何使用 ASP.NET MVC + SignalR 强制服务器不断发送事件数据?

c# - 重载 '+' 的不可变列表是否有意义?

c# - 实现一个非常特殊的通用签名

c# - 从对象中获取自定义属性

wpf - 在代码中获取上下文菜单的所有者

c# - 使用 wpf 在列表框中绑定(bind)字典的键和值

wpf - WPF 触发器值能否持续超出触发条件?

wpf - 为什么在 MVVM 应用程序的 Controller 构造函数参数中使用 Func<>