设置width属性时,代码隐藏中的WPF DataTemplate崩溃

本文关键字:WPF DataTemplate 崩溃 隐藏 代码 width 属性 设置 | 更新日期: 2023-09-27 17:59:37

我有以下代码:

protected override DataTemplate _CreateDataTemplate()
{
    var dataTemplate = new DataTemplate();
    var factory = new FrameworkElementFactory(typeof(DockPanel));
    factory.SetBinding(Panel.BackgroundProperty, new Binding(CellContentBindingPath.Replace(".ValueUser", ".Background")));
    dataTemplate.VisualTree = factory;
    var childFactory = new FrameworkElementFactory(typeof(Image));
    childFactory.SetValue(FrameworkElement.WidthProperty, 15);
    factory.AppendChild(childFactory);
    childFactory = new FrameworkElementFactory(typeof(TextBlock));
    factory.AppendChild(new FrameworkElementFactory(""));
    childFactory.SetBinding(TextBlock.TextProperty, !ShowZero ? new Binding(CellContentBindingPath) { Converter = new ValueToNothingConverter() } : new Binding(CellContentBindingPath));
    childFactory.SetValue(FrameworkElement.HorizontalAlignmentProperty, ContentAlignment);            
    factory.AppendChild(childFactory);
    return dataTemplate;
}

错误是";15不是属性宽度"的有效值;。

当我不设置图像的宽度时,一切都很好。不幸的是宽度非常重要。

很抱歉代码格式不正确,我没有找到如何使其格式正确。

设置width属性时,代码隐藏中的WPF DataTemplate崩溃

FrameworkElement.Width属性的类型为double,但您试图将其设置为整数值。

相反,可以像下面这样写:

childFactory.SetValue(FrameworkElement.WidthProperty, 15.0);
childFactory.SetValue(FrameworkElement.WidthProperty, 15d);
childFactory.SetValue(FrameworkElement.WidthProperty, 15D);