Wpf DataGrid увеличить / уменьшить - PullRequest
2 голосов
/ 10 июня 2010

Я использую сетку данных wpf с шаблонными столбцами.

Я просто хочу предоставить пользователям возможность увеличения / уменьшения.

любой способ достичь этого?

Ответы [ 3 ]

9 голосов
/ 10 июня 2010

В приведенном ниже примере используется ползунок для управления масштабированием текстового блока.

<Window x:Class="ZoomTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="300" Width="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Slider Grid.Row="0" Name="_zoom" Minimum="1" Maximum="100" />
        <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
            <Grid>
                <TextBlock Text="DataGrid" Background="Red"/>
                <Grid.LayoutTransform>
                    <ScaleTransform ScaleX="{Binding Path=Value, ElementName=_zoom}" ScaleY="{Binding Path=Value, ElementName=_zoom}" />
                </Grid.LayoutTransform>
            </Grid>
        </ScrollViewer>
    </Grid>
</Window>
3 голосов
/ 10 июня 2010

Вы можете применить масштабное преобразование к элементу, который вы хотите увеличить.

Например, у меня есть изображение внутри элемента управления Border, и для увеличения / уменьшения я использую что-то вроде следующего:

<Slider x:Name="MySlider"
        Minimum="0.25"
        Maximum="2.0"
        SmallChange="0.25"
        LargeChange="0.5"
        Value="1.0" />

<Border>
    <Border.LayoutTransform>
        <ScaleTransform ScaleX="{Binding ElementName=MySlider, Path=Value}"
                        ScaleY="{Binding ElementName=MySlider, Path=Value}" />
    </Border.LayoutTransform>
    <Image ... />
</Border>

В моем случае я фактически связываю значения со свойствами MVVM, но приведенный выше пример должен работать.ScaleTransform основан на значении ползунка и одинаково масштабирует оба направления X и Y.Ползунок позволяет масштабировать от одной четверти (0,25) от исходного размера до двукратного (2,0) исходного размера, при этом исходное масштабирование установлено на исходный размер (1,0).

0 голосов
/ 07 апреля 2016

Это старый вопрос с ответом, но приведенные выше решения XAML приводят меня к тому, что мне нужно для моего проекта. Совместное использование.

Для программного управления вне XAML DataGrid работает следующий код:

dataGrid.LayoutTransform = New Windows.Media.ScaleTransform(ZoomLevelX, ZoomLevelY)

Где ZoomLevelX и ZoomLevelY являются значениями с плавающей запятой. Для моего проекта уровень масштабирования одинаков в координатах X и Y, поэтому я просто использовал одну переменную для обоих параметров. Кроме того, мой проект был ограничен следующими коэффициентами масштабирования: 20%, 50%, 70%, 80%, 100%, 150%, 200%, 300%.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...