Полоса прокрутки в окне просмотра прокрутки WPF Horizonatl не отображается полностью - PullRequest
0 голосов
/ 24 января 2019

У меня есть две панели Canvas в ScrollViewer.Одним из них является основной холст с сеткой, нарисованной на заднем плане.Тогда у меня есть два ItemsControl.Первый ItemsControl имеет Stackpanel в качестве своей ItemsPanel с горизонтальной ориентацией.Второй ItemsControl имеет Canvas в качестве панели.На этом холсте я рисую объекты Line в DataTemplate Itemscontrol. На этом холсте есть событие PreviewMouseWheel.В обработчике событий я масштабирую этот холст, который масштабирует объекты Line.Ширина этого холста привязывается к свойству ViewModel CanvasWidth.Также это изменит ширину Outer Canvas, так как его ширина также привязана к свойству ViewModel CanvasWidth.Когда PreviewMouseWheel запущен, я добавляю больше линий сетки на основной холст.У меня есть TextBlock над ними как DataTemplate ItemsSource.Перед масштабированием содержимое последнего TextBlock было 14260. После zoomin оно должно оставаться 14260. Но значение шага двух последовательных TextBlock должно быть уменьшено.Сейчас я не могу видеть весь контент через ScrollViewer.Размер шага уменьшен, что было желательно, но новые нарисованные линии сетки не видны через Scrollviewer.Я знаю, что есть контент.но я не могу получить к нему доступ.Scrollviewer не показывает его.Я попытался использовать Layouttransform вместо RenderTransform.Это дало мне ужасный результат.С RenderTransform масштабирование было идеальным.Единственная проблема заключалась в том, что я не получал весь контент холста.Также я попытался сделать основной внешний холст как собственный холст, выведя его из класса Canvas. Но он не работал.Я также попытался привязать ширину ScrollViewer к родительской сетке ActualWidth.Но не было никаких изменений в выходе.Я делюсь двумя ссылками, где я разместил скриншот с результатами.Я благодарен всем вам, ребята, которые уделяют мне немного времени.

вот изображение на выходе https://imgur.com/a/7WTrBoc это увеличенное изображение https://imgur.com/C7SCOSJ

<Grid x:Name="grid1" >
                <Grid.RowDefinitions>
                    <RowDefinition Height="20" /> 
                    <RowDefinition Height="*" /> 
                    <RowDefinition Height="20" /> 
                </Grid.RowDefinitions>

                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="20" /> 
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*"/>   
                    <ColumnDefinition Width="20"/> 
                </Grid.ColumnDefinitions>
         <ScrollViewer Name="scrollViewer" HorizontalScrollBarVisibility="Auto" Grid.Row="1" Grid.Column="3"   Margin="10,10,0,10" >
                        <Canvas Name="back_canvas"  Height="12000"  Width="{Binding CanvasWidth}" Margin="0,0,10,0" >
                            <Canvas.Background>
                                <DrawingBrush TileMode="Tile" Viewport="0,0,40,40"  ViewportUnits="Absolute"> 
                                    <DrawingBrush.Drawing>
                                        <GeometryDrawing>
                                            <GeometryDrawing.Geometry>
                                                <RectangleGeometry Rect="0,0,50,50"/>
                                            </GeometryDrawing.Geometry>
                                            <GeometryDrawing.Pen>
                                                <Pen Brush="Gray" Thickness="1"/>
                                            </GeometryDrawing.Pen>
                                        </GeometryDrawing>
                                    </DrawingBrush.Drawing>
                                </DrawingBrush>
                            </Canvas.Background>


                            <ItemsControl ItemsSource="{Binding TimeAxis}">
                                <ItemsControl.ItemsPanel>
                                    <ItemsPanelTemplate>
                                        <StackPanel Orientation="Horizontal" />
                                    </ItemsPanelTemplate>
                                </ItemsControl.ItemsPanel>
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding}"  Margin="0,0,3,0"    Width="37"  Background="GreenYellow" >
                                        </TextBlock>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        <ItemsControl ItemsSource="{Binding Lines}">
                            <ItemsControl.ItemsPanel>
                                    <ItemsPanelTemplate>
                                        <Canvas Height="12000" Background="Transparent"  Name="front_canvas" 

                                            PreviewMouseWheel="OnPreviewMouseWheel"

                                              Width="{Binding CanvasWidth, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
                                    </ItemsPanelTemplate>
                                </ItemsControl.ItemsPanel>
                            <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        </Line>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                        </ItemsControl>
         </Canvas>
         </ScrollViewer>
 </Grid>
...