相关疑难解决方法(0)

WPF:如何使画布自动调整大小?

我希望我Canvas自动调整大小到其项目的大小,以便ScrollViewer滚动条具有正确的范围.这可以在XAML中完成吗?

<ScrollViewer HorizontalScrollBarVisibility="Auto" x:Name="_scrollViewer">
    <Grid x:Name ="_canvasGrid" Background="Yellow">
        <Canvas x:Name="_canvas" HorizontalAlignment="Left" VerticalAlignment="Top" Background="Green"></Canvas>
        <Line IsHitTestVisible="False" .../>
    </Grid>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,画布的大小始终为0,但它不会剪切其子元素.

.net wpf resize scrollviewer wpf-controls

43
推荐指数
5
解决办法
8万
查看次数

更改"画布"内控件的位置后,ScrollBars不可见

我创建了一个继承自WPF的自定义画布控件Canvas.我在主窗口中使用它 -

<ScrollViewer
    HorizontalScrollBarVisibility="Auto"
    VerticalScrollBarVisibility="Auto">
    <RTD:RTDesignerCanvas
        Margin="5"
        Background="White"
        x:Name="canvas1"
        Focusable="True"
        AllowDrop="True">
    </RTD:RTDesignerCanvas>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

一切正常,但是当我尝试像这样设置控件的位置时

Canvas.SetTop(item, 200);

滚动条不可见,控件隐藏在某处.有趣的是,如果我向其添加另一个控件滚动条是可见的,我可以向下滚动以查看上一个控件.

我试着用

base.InvalidateVisual();
base.UpdateLayout();
base.InvalidateArrange();
Run Code Online (Sandbox Code Playgroud)

更换物品后TopLeft没有任何反应; 我错过了什么或者由于某些错误而发生这种情况?

更新:

澄清,说我有有它的画布width,height100,100.现在,如果我用移动的控制(在画布上已添加),Canvas.SetLeft(myControl, 200)然后它会移动到这是默认情况下不可见,并且滚动条也被禁止的位置,所以没有办法看到那种控制.

现在,如果我向Canvas添加另一个控件,ScrollBars会正确显示,我可以通过滚动查看上一个控件.

.net wpf canvas custom-controls scrollviewer

2
推荐指数
1
解决办法
4386
查看次数

Scrollviewer上的Silverlight Canvas不会触发

为什么这在wpf中运行良好

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Canvas x:Name="MyDesigner">
</Canvas>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

现在,当我在Silverlight中执行相同操作并加载"可以拖动"的控件时,滚动条不会被触发,当我拖出视图时,没有任何反应...但是在wpf中它会自动显示它们...

silverlight wpf

1
推荐指数
1
解决办法
2914
查看次数