【问题标题】:Binding errors for ListViewItemListViewItem 的绑定错误
【发布时间】:2015-05-17 16:17:45
【问题描述】:

在应用程序运行时,我遇到了以下错误: System.Windows.Data 错误:4:找不到与引用“RelativeSource FindAncestor,AncestorType='System.Windows.Controls.ItemsControl',AncestorLevel='1''的绑定源。 BindingExpression:Path=Horizo​​ntalContentAlignment;数据项=空;目标元素是'ListViewItem'(名称='');目标属性是“Horizo​​ntalContentAlignment”(类型“Horizo​​ntalAlignment”)

我尝试添加以下样式代码行,但不幸的是它没有帮助。 有什么想法吗?

代码:

<ListView Visibility="{Binding Path=IsListDisplayed, Converter={StaticResource BooleanToVisConverter}}" 
              ScrollViewer.VerticalScrollBarVisibility="Auto"                      
              ScrollViewer.HorizontalScrollBarVisibility="Disabled"                  
              Grid.Row="1" 
              ItemsSource="{Binding JobsList}"
              SelectedItem="{Binding SelectedJob}"                      
              x:Name="JobsLv">

        <ListView.ItemsPanel>
            <ItemsPanelTemplate>                    
                <avt_controls:VirtualizingWrapPanel/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>                
            <DataTemplate>
                <Border BorderThickness="4" CornerRadius="10" Margin="10">
                    <Border.Style>
                        <Style TargetType="{x:Type Border}">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding JobStatus}" Value="Ready">
                                    <Setter Property="BorderBrush" Value="Green"/>
                                </DataTrigger>
                                <DataTrigger Binding="{Binding JobStatus}" Value="FromMIS">
                                    <Setter Property="BorderBrush" Value="Blue"/>
                                </DataTrigger>
                                <DataTrigger Binding="{Binding JobStatus}" Value="InProgress">
                                    <Setter Property="BorderBrush" Value="Red"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Border.Style>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <TextBlock Text="{Binding JobName}" Grid.Row="0" FontSize="13" Margin="5,0,0,0"/>
                        <TextBlock Text="{Binding LastUpdate, StringFormat={}{0:dd/MM/yyyy hh:mm}}" Grid.Row="1" FontSize="13" Margin="5,0,0,0"/>
                        <ListView Grid.Row="2" ItemsSource="{Binding Designs}" BorderBrush="Transparent" Background="Transparent" Margin="3">
                            <ListView.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"></StackPanel>
                                </ItemsPanelTemplate>
                            </ListView.ItemsPanel>
                            <ListView.ItemTemplate>
                                <DataTemplate>
                                    <Image Width="100" Margin="1">
                                        <Image.Style>
                                            <Style TargetType="{x:Type Image}">
                                                <Style.Triggers>
                                                    <DataTrigger Binding="{Binding IsDownloading}" Value="True">
                                                        <Setter Property="Source" Value="{Binding ThumbnailFilePath}"/>
                                                    </DataTrigger>
                                                    <DataTrigger Binding="{Binding IsDownloading}" Value="False">
                                                        <Setter Property="Source" Value="{Binding ThumbnailFilePath}"/>
                                                    </DataTrigger>
                                                </Style.Triggers>
                                            </Style>
                                        </Image.Style>
                                    </Image>
                                </DataTemplate>
                            </ListView.ItemTemplate>
                        </ListView>
                    </Grid>
                </Border>
            </DataTemplate>                   
        </ListView.ItemTemplate>            
    </ListView>

【问题讨论】:

  • 你能提供完整的 ListView XAML 吗?
  • 现在请查看上面的代码。谢谢,谢
  • 您的问题提到您的绑定试图绑定到HorizontalContentAlignment,但我在您的代码中没有看到任何提及。如果情况发生了变化,您能否更新问题?谢谢。

标签: wpf binding


【解决方案1】:

(我知道迟到的答案,但这是我发现的第一批链接之一,因此可能对某人有所帮助。)

对于带有复杂 ItemTemplate 的列表视图,我在使用简单 WrapPanel 时遇到了与我的 ItemsPanel 相同的问题(但在任何地方都没有奇怪的对齐绑定)。在创建具有 ListView 的页面时,它会抱怨 Horizo​​ntalContentAlignment 和 VerticalContentAlignment 的绑定错误,之后它会正常工作。

<ListView.ItemsPanel>
  <ItemsPanelTemplate>
    <WrapPanel Orientation="Horizontal"/>
  </ItemsPanelTemplate>
</ListView.ItemsPanel>

我用https://www.nuget.org/packages/VirtualizingWrapPanel/ 替换了WrapPanel,因为无论如何我都想进行虚拟化。错误现在消失了。请注意,出于某种原因,与标准 WrapPanel 相比,Orientation 的工作方式相反。

<ListView.ItemsPanel>
  <ItemsPanelTemplate>
    <wpftk:VirtualizingWrapPanel Orientation="Vertical"/>
  </ItemsPanelTemplate>
</ListView.ItemsPanel>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 2015-09-11
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 2011-01-30
    相关资源
    最近更新 更多