WPF DataGrid увеличение/уменьшение масштаба


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

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

Как этого добиться?

3   2   2010-06-10 13:11:21

3 ответа:

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

<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>

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

Например, у меня есть изображение внутри пограничного контроля, и для увеличения/уменьшения масштаба я использую что-то вроде следующего:
<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).

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

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

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

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