zoukankan      html  css  js  c++  java
  • WPF绑定错误

    listbox绑定遇到了奇怪的报错如下:

    System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=Background; DataItem=null; target element is 'ListBoxItem' (Name=''); target property is 'Background' (type 'Brush')
    System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=HorizontalContentAlignment; DataItem=null; target element is 'ListBoxItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment')
    System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=VerticalContentAlignment; DataItem=null; target element is 'ListBoxItem' (Name=''); target property is 'VerticalContentAlignment' (type 'VerticalAlignment')

    分析下,我listboxitem根本就没有设置这些啊,经过不断摸索发现,应该是默认的样式,wpf的listboxitem默认样式如下:

    Style
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:s="clr-namespace:System;assembly=mscorlib"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        TargetType="{x:Type ListBoxItem}">
        <Style.Resources>
           <ResourceDictionary/>
        </Style.Resources>
        <Setter Property="Panel.Background">
           <Setter.Value>
              <SolidColorBrush>
            #00FFFFFF
              </SolidColorBrush>
           </Setter.Value>
        </Setter>
        <Setter Property="Control.HorizontalContentAlignment">
           <Setter.Value>
              <Binding Path="HorizontalContentAlignment" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ItemsControl, AncestorLevel=1}"/>
           </Setter.Value>
        </Setter>
        <Setter Property="Control.VerticalContentAlignment">
           <Setter.Value>
              <Binding Path="VerticalContentAlignment" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ItemsControl, AncestorLevel=1}"/>
           </Setter.Value>
        </Setter>
        <Setter Property="Control.Padding">
           <Setter.Value>
              <Thickness>
            2,0,0,0
              </Thickness>
           </Setter.Value>
        </Setter>
        <Setter Property="Control.Template">
           <Setter.Value>
              <ControlTemplate TargetType="{x:Type ListBoxItem}">
                 ...
              </ControlTemplate>
           </Setter.Value>
        </Setter>
     </Style>

    尝试如下覆盖原来的样式方法解决,发现还是一样报错

     <Style TargetType="ListBoxItem">
                                            <Setter Property="HorizontalContentAlignment" Value="Center" />
                                            <Setter Property="VerticalContentAlignment" Value="Center" />
                                        </Style>

    ,最终发现要这样解决才可以

    <ListBox.Resources>
                                        <Style TargetType="ListBoxItem">
                                            <Setter Property="HorizontalContentAlignment" Value="Center" />
                                            <Setter Property="VerticalContentAlignment" Value="Center" />
                                        </Style>
                                    </ListBox.Resources>
                                    <ListBox.ItemContainerStyle>
                                        <Style TargetType="ListBoxItem">
                                            <Setter Property="HorizontalContentAlignment" Value="Center" />
                                            <Setter Property="VerticalContentAlignment" Value="Center" />
                                        </Style>
                                    </ListBox.ItemContainerStyle>
    

      

  • 相关阅读:
    localstorage和sessionstorage的区别
    vue监听数组变化
    博客项目之设计访客统计
    记录从前端到后端--博客项目
    把w3schools英文版的所有属性扒下来了,免费分享。
    记一次博客园改版,如果你想做的漂亮点的话。
    我有话说
    彻底理解nth-child和nth-of-type的区别。
    前端这条路,我们该何去何从,续集
    一篇通俗易懂的CSS层叠顺序与层叠上下文研究
  • 原文地址:https://www.cnblogs.com/karl-F/p/8808621.html
Copyright © 2011-2022 走看看