WPF中如何为Button背景图设置内边距及解决ScrollViewer下显示异常
初始需求与现有实现
我希望实现为Button的背景图设置专属边距的效果,当前已实现的代码如下:
<Button Grid.Column="3" Margin="2,0"> <Button.Background> <ImageBrush Stretch="Fill" TileMode="None"> <ImageBrush.ImageSource> <DrawingImage Drawing="{StaticResource MyImage}" /> </ImageBrush.ImageSource> </ImageBrush> </Button.Background> </Button>
上述代码会让背景图完全填充Button,符合基础预期,但目前我需要在背景图四周添加小额边距。由于ImageBrush、DrawingImage均未提供对应边距属性,暂未找到直接的实现方案。
试错方案与异常表现
我曾尝试通过在Button的Content中放置可设置边距的Image来实现需求,但该方案存在异常:当将Button放入ScrollViewer控件中时,调整视图尺寸Button会随之拉伸,但其中的Image尺寸保持不变,显示效果异常。
- 更新 *
补充排查与待确认疑问
根据已收到的答复,自定义样式似乎是适配性最佳的方案。但我怀疑核心问题并非Button本身,而是包裹Button的ScrollViewer:我附上了两张对比截图,第一张为带ScrollViewer的效果,第二张为不带ScrollViewer的效果;带ScrollViewer时Image尺寸过小无法适配Button,这是否为问题的根本原因?请各位给出相关建议。
带ScrollViewer的效果:
不带ScrollViewer的效果:
内容的提问来源于stack exchange,提问作者Franz Gsell
相关产品推荐
相关产品推荐

