c# - 如何将滚动条添加到网格

标签 c# wpf xaml scrollbar

如何向网格添加滚动条?

    <Grid>
        <Menu Height="23" Name="menu1" VerticalAlignment="Top">
            <MenuItem Header="File">
                <MenuItem Command="ApplicationCommands.New" Header="New" />
                <MenuItem Command="ApplicationCommands.Save" Header="Save" />
                <MenuItem Command="ApplicationCommands.Open" Header="Open" />
                <MenuItem Command="ApplicationCommands.Close" Header="Exit" />
            </MenuItem>
            <MenuItem Header="Stuff">
                <MenuItem Header="Properties" Command="Properties"/>
                <MenuItem Header="Tileset" Command="Replace"/>
            </MenuItem>
        </Menu>
        <Grid Margin="0,24,0,0">
            <Canvas HorizontalAlignment="Stretch" Name="canvas1" VerticalAlignment="Stretch" MouseMove="MoveMouse" MouseDown="PressDownMouse" MouseUp="canvas2_MouseLeftButtonUp" MouseWheel="canvas1_MouseWheel"/>
            <Canvas HorizontalAlignment="Stretch" Name="canvas2" VerticalAlignment="Stretch" MouseMove="MoveMouse" MouseDown="PressDownMouse" MouseUp="canvas2_MouseLeftButtonUp" MouseWheel="canvas1_MouseWheel"/>
            <ListView HorizontalAlignment="Left" Name="listView1" Width="203" VerticalAlignment="Stretch" SelectionChanged="listView1_SelectionChanged">
            </ListView>
        </Grid>
    </Grid>

两个 Canvas 可能太高或太宽。

这是 Tile Map Editor,我在 Canvas 上绘制所有内容。在 ListView 中,我要插入图 block 。

最佳答案

通常你可以用<ScrollViewer>包裹元素或设置 ScrollViewer.HorizontalScrollBarVisibilityScrollViewer.VerticalScrollBarVisibility在元素的 XAML 中。我喜欢设置为 Auto ,以便它们仅在需要时出现。

试试这个开始:

<ScrollViewer>
  <Grid>
  // some code
  </Grid>
</ScrollViewer>

编辑以获取更多帮助!这是一个更好的布局示例, ListView 位于左侧,后面是两个 Canvas 。您可能希望将它们放在彼此之上或采用不同的布局,但这将向您展示如何操作:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <Menu Name="menu1" >
        <MenuItem Header="File">
            <MenuItem Command="ApplicationCommands.New" Header="New" />
            <MenuItem Command="ApplicationCommands.Save" Header="Save" />
            <MenuItem Command="ApplicationCommands.Open" Header="Open" />
            <MenuItem Command="ApplicationCommands.Close" Header="Exit" />
        </MenuItem>
        <MenuItem Header="Stuff">
            <MenuItem Header="Properties" Command="Properties"/>
            <MenuItem Header="Tileset" Command="Replace"/>
        </MenuItem>
    </Menu>
    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <ListView />
        <Canvas Grid.Column="1"/>
        <Canvas Grid.Column="2"/>
    </Grid>
</Grid>

关于c# - 如何将滚动条添加到网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29354893/

相关文章:

wpf - 在 Prism 中使用 ModuleManager 加载模块

WPF 布局 : elements growing, 但没有正确缩小

c# - 在 C# 中向上转型

c# - 菜单、工具栏、StackPanel 等中的垂直分隔符控件 - 这可能吗?

c# - Windows 应用商店应用程序中的文本框垂直对齐方式

css - XAML 中的简单悬停效果?

c# - Visibility.Collapse 不会在 Win8 上完全折叠项目

c# - 从数据库表中选择两行

c# - MessageBox.Show 导致无法拾取光标的变化

c# - 使用 MVC 3.0 在 Telerik Treeview 中嵌套子项