WPF之Canvas不能添加ScrollViewer问题的终极解决方案

**前言*本人是个学习WPF的新手,期间遇到了很多问题,今天在项目上遇到了一个特别麻烦的问题,就是Canvas不能添加滑动条,我原先的想法是用Canvas作为父容器,之所以采用Canvas作为父容器,是因为它可以实现绝对布局,可以方便的通过程序来控制子控件的位置,可以实现动态的往里面添加图片,然后可以加个滚动条实时的浏览传过来的图片,如果跟我有相同想法的朋友可以看一下我在实现这个功能的过程中遇到的种种问题。最后经过一系列的查找资料,不断的调试程序终于解决了。

(1)通过查找资料说可以给Canvas加个StackPanel,于是我尝试了一下,代码布局如下:

 
        
        
        
        
    

我的想法很简单,将Canvas的Height设置成Auto,这样就可以动态的往里面添加图片了,然后在Canvas外层加了一个StackPanel,也不限定它的高度,这种做法相当于是给StackPanel加了滑动条,它里面只有Canvas这一个子控件,虽然子控件的高度并没有限制,但是你会发现,你主窗体的高度却限制住了它,调式的结果是只能显示主窗体高度的图片数,有点小失望,然后果断的抛弃了这种方法
(2)第二种方法替换Canvas,采用WrapPanel,提前做一个用户控件用来存放图片,然后将该用户控件添加到WrapPanel中。为什么要做一个用户控件来存放图片呢?,因为用户控件格式和布局可以自己设置,而WrapPanel不好设置子控件的位置,所以提前将模板做好,之后直接放入到WrapPanel中就好。代码布局如下:


        

        
    

当然了动态的添加图片和刷新图片的过程需要用到委托机制,但是不管怎样最后还是顺利的解决了这个问题。
(3)最后贴一个实现的效果图:在这里插入代码片
欢迎评论和留言,具体的代码实现逻辑这里就不做详细介绍了,有想知道怎么实现的可以给我留言,我一般都会回复的~~

你可能感兴趣的:(WPF,ScrollViewer,如何给Canvas添加滑动条,WPF)