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>
    

      

  • 相关阅读:
    C#中的多态
    反编译工具
    富文本粘贴图片
    [Silverlight入门系列]用TransformToVisual和Transform取得元素绝对位置(Location)
    Silverlight在IIS中的配置
    HubbleDotNet开源全文搜索数据库项目技术详解
    Thank you for choosing Telerik RadRichTextBox
    Asp.net读取AD域信息的方法<转>
    Sharepoint学习笔记—ECMAScript对象模型系列1、ECMAScript对象模型的引入
    SharePoint WebService
  • 原文地址:https://www.cnblogs.com/karl-F/p/8808621.html
Copyright © 2011-2022 走看看