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>
    

      

  • 相关阅读:
    CF687D Dividing Kingdom II
    图论——EK算法
    P6082 [JSOI2015]salesman
    联合权值——树上问题2014noip
    P2071 座位安排——二分图最大匹配
    匈牙利优化时间戳的正确性
    P1541 乌龟棋——线性动规
    P1858 多人背包
    P3558 [POI2013]BAJ-Bytecomputer——线性动归
    P2303 [SDOI2012] Longge 的问题
  • 原文地址:https://www.cnblogs.com/karl-F/p/8808621.html
Copyright © 2011-2022 走看看