在Listbox中有一个项目溢出

20 浏览
0 Comments

在Listbox中有一个项目溢出

列表框中存在溢出问题。如果有人知道我在代码的这部分做错了什么,请提供意见。我检查了这个问题,但没有得到很好的答案。列表视图也无法工作。我将尝试使用ItemControl,但是很难获取所选项。也许可以尝试使用ZIndex?但是也无法解决问题。

ThumbnailView是一个用户控件,用于显示缩略图。它包含一个ListBox用于显示缩略图列表。用户可以选择缩略图并点击“确定”或“取消”按钮。点击“确定”按钮将会返回所选缩略图对应的窗口对象。点击“取消”按钮将会关闭对话框。

0
0 Comments

这个问题的出现的原因是在代码中重新定义了控件模板,但没有使用TemplateBinding来设置ScrollViewer.HorizontalScrollBarVisibility属性。因此,像这样设置ListBox属性是无效的:


因为已经有了模板,可以通过以下方式修复问题:1)正确定义模板绑定 2)直接设置ScrollViewer属性(在控件模板内部)。

以下是错误的部分:


    
        
            
                

你将其设置为Auto。改为Disabled或者像这样操作:


非常感谢!这样修复了溢出问题,因为父UserControl将取得最大宽度并减少列表框中每个元素的大小。但是我想保持UserControl(或者listBox)的宽度为400。通过使用WpfInspector,我发现“ItemsPresenter”的宽度大约为2500...我认为这就是问题所在...我正在解决这个问题。

ItemsPresenter的宽度为2500,是因为你告诉它使用水平StackPanel来显示你的项目(在ItemsPanelTemplate中)。那么你希望你的项目如何显示呢?

0
0 Comments

问题的原因是使用了一个非WPF原生的控件在WPF应用程序中渲染时出现问题。解决方法是创建一个自定义的ListBox控件来替代这个非原生控件,以解决渲染问题。

0
0 Comments

在ListBox中,如果想要保留水平滚动条但防止列表项溢出,可以使用ClipToBounds属性进行设置。可以在ListBox中设置该属性,并在ItemsPresenter中进行TemplateBinding绑定。这样做应该可以防止溢出(如果不能,可以尝试在ItemsPanelTemplate的StackPanel中设置)。

代码示例:


    
        
            
                
                    
                
            
        
    

如果这样仍然不起作用,可以尝试在ItemsPresenter和/或ItemsPanelTemplate的StackPanel中设置ClipToBounds="True"。

代码示例:


希望这对你有所帮助。

0