Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ListBoxItem上的ContentAlignment错误。未应用样式设置器_C#_Wpf_Data Binding - Fatal编程技术网

C# ListBoxItem上的ContentAlignment错误。未应用样式设置器

C# ListBoxItem上的ContentAlignment错误。未应用样式设置器,c#,wpf,data-binding,C#,Wpf,Data Binding,我发现以下数据绑定错误: System.Windows.Data错误:4:找不到引用为“RelativeSource FindAncestor,AncestorType='System.Windows.Controls.ItemsControl',AncestorLevel='1'的绑定源。BindingExpression:Path=HorizontalContentAlignment;DataItem=null;目标元素是“ListBoxItem”(名称=“”);目标属性为“Horizont

我发现以下数据绑定错误:

System.Windows.Data错误:4:找不到引用为“RelativeSource FindAncestor,AncestorType='System.Windows.Controls.ItemsControl',AncestorLevel='1'的绑定源。BindingExpression:Path=HorizontalContentAlignment;DataItem=null;目标元素是“ListBoxItem”(名称=“”);目标属性为“HorizontalContentAlignment”(类型为“HorizontalAlignment”)

即使我的ListBox.ItemContainerStyle指定了不同的值

<ListBox.ItemContainerStyle>
   <Style TargetType="{x:Type ListBoxItem}">
      <Setter Property="VerticalContentAlignment" Value="Stretch" />
      <Setter Property="HorizontalContentAlignment" Value="Stretch" />
      <Setter Property="FocusVisualStyle" Value="{StaticResource EmptyFocusVisualStyle}" />
      <Setter Property="Template">
         <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListBoxItem}">
               <ContentPresenter x:Name="Content" />
            </ControlTemplate>
         </Setter.Value>
      </Setter>
   </Style>
</ListBox.ItemContainerStyle>

但是,如果我使用Snoop检查该项,则该项不会显示数据绑定错误。尽管Snoop显示了有效的数据绑定,即使我将该值设置为常量而不是绑定?! 其他二传手的工作方式与预期一致

在更高级别设置样式不会解决此错误。 有人能帮我吗

编辑:我在这里读过很多类似的问题,但是那里的答案并没有解决我的问题

编辑2: 我知道错误指向包含绑定的ListBoxItem的默认模板。我知道这是一个常见的问题,但在大多数线程中,我读到的解决方案是在App.xaml/resources/ItemContainerStyle中设置样式。我的问题是,所有的方法都没有解决我的问题

别误会我,我只是不想说清楚。禁止或忽略此错误不是一个选项。在大型应用程序中,绑定将变得不可维护

编辑3:
经过进一步调查,我发现只有在我将项目添加到StartUpUri窗口的构造函数中的列表框中(在InitializeComponent之后),如果我在此之后添加项目(事件、其他表单或调度),才会发生这种情况不再存在数据绑定问题。

这是一个常见错误,发生在
ListBoxItem
MenuItem
类的默认
ControlTemplate
中,与您的代码无关。它尝试查找最近的
项控件
祖先,并绑定到
垂直内容对齐
水平内容对齐
属性,但由于代码中没有任何属性,因此会出现此警告

异常是在内部处理的,因此您可以忽略这些警告。有许多所谓的修复方法在不同程度上起作用。一个这样的示例就是以
样式设置这些属性,但当我遇到此问题时,此修复没有帮助(我可以看到您也尝试了此方法):



不管怎样,它们只是警告,对应用程序没有负面影响,所以你可以忽略它们(尽管它们很烦人)。如果你将错误信息放入搜索引擎(你必须删除标点符号),那么你会发现更多关于这个主题的帖子。

问题出在别处,输出窗口提到的
相对资源
的绑定
在哪里?问题出在包含TemplateBinding的ListBoxItem的默认模板中。我应该澄清ofc将编辑我的帖子。我应该提到我知道默认的模板实现。但问题是,即使我在App.xaml中声明了一个样式,我仍然会得到上面的绑定错误,而对于大多数ppl来说,这似乎可以解决它。更奇怪的是,snoop在我的可视化树中显示了VerticalContentAlignment的有效数据绑定。ListBoxItem位于可视化树中的一个ListBox下,它应该让TemplateBinding找到它正在搜索的ItemsControl。是的,这会节省我一些时间。无论哪种方式,我的一个应用程序在一个特定视图中都存在相同的问题。起初,我觉得这也很烦人,并尝试了一些方法来删除警告。它们对我也不起作用,但在了解了这些警告的原因以及它们对应用程序没有负面影响之后,我决定忽略它们。我只在处理这个视图时看到它们,而且它已经完全实现了,我不需要再处理它了。。。眼不见,心不烦。
<Style TargetType="{x:Type ListBoxItem}">
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="VerticalContentAlignment" Value="Stretch" />
</Style>