1

ScrollViewer在 WPF 项目中使用 a 并且我正在努力处理它的内容。包含此 SV 的窗口有许多其他 UI 项,我想让图像滚动到ScrollViewerSV 区域之外或至少在其他元素后面不可见。

这是我的 SV 代码(是的,它在网格内):

<Grid Name="mainGrid">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="200*" />
        <ColumnDefinition Width="802*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="30*" />
        <RowDefinition Height="500*" />
        <RowDefinition Height="199*" />
    </Grid.RowDefinitions>

    <ScrollViewer Grid.Row="1" Grid.ColumnSpan="2" Name="map" Margin="0,0,0,0" PanningMode="Both" HorizontalScrollBarVisibility="Visible" Background="DarkGray" ClipToBounds="True">
        <WindowsFormsHost Name="windowsFormsHost1" Cursor="Cross" HorizontalAlignment="Left" VerticalAlignment="Top" ClipToBounds="True" />
    </ScrollViewer>
</grid>

我遇到的另一个问题是,我想在将鼠标放在图像上时滚动图像。实际上,它仅在鼠标位于ScrollViewer.

这是后面代码的一部分:

public MainWindow()
{
    InitializeComponent();

    //Creation of the map
    Map newMap = new Map();
    newMap.setMapStrategy(new SmallMapStrategy());
    newMap.createMap();

    //Put the map in the PB as an image
    System.Windows.Forms.PictureBox pictureBox = new System.Windows.Forms.PictureBox();
    pictureBox.Width = newMap.grid.Count * 2; pictureBox.Height = newMap.grid.Count * 2;
    newMap.afficher(pictureBox);
    windowsFormsHost1.Width = newMap.grid.Count * 2; windowsFormsHost1.Height = newMap.grid.Count * 2;
    windowsFormsHost1.Child = pictureBox;
}
4

1 回答 1

1

我使用 ScrollableControl 解决了我的问题。所以现在,我的 PictureBox 位于可滚动控件中,该控件位于包含在网格中的 WindowsFormsHost 中。

        System.Windows.Forms.PictureBox pictureBox = new System.Windows.Forms.PictureBox();
        pictureBox.Width = (int)Math.Sqrt((double)game.Map.grid.Count) * 50; pictureBox.Height = (int)Math.Sqrt((double)game.Map.grid.Count) * 50;
        game.Map.afficher(pictureBox);
        System.Windows.Forms.ScrollableControl sc = new System.Windows.Forms.ScrollableControl();
        sc.Controls.Add(pictureBox);
        sc.AutoScroll = true;
        windowsFormsHost1.Child = sc;
于 2013-01-04T20:41:54.697 回答