WPF数据网格缩放问题
我正在使用WPFToolkit中的WPF数据网格,并且在尝试缩放整个数据网格时遇到了问题。我最初的想法是,这将是非常简单的,我只需将缩放变换应用到网格,并在用户单击按钮时设置ScaleX、ScaleY属性的动画。但是,这不起作用,因为滚动条被放大了。我需要datagrid上的固定标题和固定列,因此我不能简单地在datagrid之外使用scrollviewer来处理滚动。我尝试的第二件事是在网格中缩放字体大小,但这失败了,因为缩小字体大小时,列保持原始宽度,不会收缩 最后,我认为通过使用下面的代码,它可以进入datagrid的视图树,并向Scroll Content Presenter添加一个缩放变换。(在这段代码中也没有显示,我以相同的方式对标题的可视树项应用转换,以便它也可以缩放)。我认为这是伟大的工作,直到我测试了水平滚动缩放后。(垂直滚动效果很好。)在缩放之前,水平滚动是可以的,但是在缩放之后,当我水平滚动时,显示会异常。很难说它到底在做什么,但它看起来像是从屏幕左侧滚动的内容正在“折叠”并从左侧返回。也许它只是在左边砸得粉碎。有没有人知道我如何才能让它工作,希望我不会扔掉我的整个数据网格,否则它已经工作得很好了WPF数据网格缩放问题,wpf,datagrid,wpftoolkit,zooming,Wpf,Datagrid,Wpftoolkit,Zooming,我正在使用WPFToolkit中的WPF数据网格,并且在尝试缩放整个数据网格时遇到了问题。我最初的想法是,这将是非常简单的,我只需将缩放变换应用到网格,并在用户单击按钮时设置ScaleX、ScaleY属性的动画。但是,这不起作用,因为滚动条被放大了。我需要datagrid上的固定标题和固定列,因此我不能简单地在datagrid之外使用scrollviewer来处理滚动。我尝试的第二件事是在网格中缩放字体大小,但这失败了,因为缩小字体大小时,列保持原始宽度,不会收缩 最后,我认为通过使用下面的代码
ScrollContentPresenter sp = (ScrollContentPresenter)
VisualTreeHelper.GetChild(
VisualTreeHelper.GetChild(
VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(dgMatrix, 0), 0), 0),2);
ScaleTransform st = new ScaleTransform(1, 1);
sp.LayoutTransform = st;
DoubleAnimation a = new DoubleAnimation();
a.By = 1.5;
a.AutoReverse = false;
a.Duration = new Duration(TimeSpan.Parse("0:0:0.25"));
st.BeginAnimation(ScaleTransform.ScaleXProperty, a);
st.BeginAnimation(ScaleTransform.ScaleYProperty, a);
我想出了一个解决办法。不知道这是否与您的做法相同:
<toolkit:DataGrid.CellStyle>
<Style TargetType="{x:Type toolkit:DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type toolkit:DataGridCell}">
<ContentPresenter>
<ContentPresenter.LayoutTransform>
<ScaleTransform ScaleX="{Binding Path=Value, ElementName=ZoomFactor}"
ScaleY="{Binding Path=Value, ElementName=ZoomFactor}" />
</ContentPresenter.LayoutTransform>
</ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</toolkit:DataGrid.CellStyle>
其中ZoomFactor是一个滑块:
<Slider x:Name="ZoomFactor"
Value="1"
Minimum=".25"
Maximum="5"
Width="180" Margin="0,0,5,0"/>
我想出了一个解决办法。不知道这是否与您的做法相同:
<toolkit:DataGrid.CellStyle>
<Style TargetType="{x:Type toolkit:DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type toolkit:DataGridCell}">
<ContentPresenter>
<ContentPresenter.LayoutTransform>
<ScaleTransform ScaleX="{Binding Path=Value, ElementName=ZoomFactor}"
ScaleY="{Binding Path=Value, ElementName=ZoomFactor}" />
</ContentPresenter.LayoutTransform>
</ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</toolkit:DataGrid.CellStyle>
其中ZoomFactor是一个滑块:
<Slider x:Name="ZoomFactor"
Value="1"
Minimum=".25"
Maximum="5"
Width="180" Margin="0,0,5,0"/>
我已经找到了一个可行的解决方案,并将在有机会时发布。如果能看到解决方案,我会很高兴……我遇到了相同的问题。我已经找到了一个可行的解决方案,并将在有机会时发布。如果能看到解决方案,我会很高兴……我遇到了相同的问题。我唯一没有完全弄清楚的问题是,一旦你放大,取消缩放/缩小后,列不会调整大小。我唯一没有弄清楚的问题是,一旦进行缩放,列在取消缩放/缩小后不会调整大小。