2012-07-29 64 views
0

我有这样的DataGrid模板:如何使用Wpf DataGrid模板?

<ControlTemplate TargetType="{x:Type DataGrid}" x:Key="zoomableControl"> 
    <ScrollViewer x:Name="scrollViewer" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"> 
     <Grid 
      <ContentPresenter> 
      </ContentPresenter> 
      <Slider Name="zoomSlider" Minimum="1" Maximum="100" Visibility="Hidden"/> 
      <Grid.LayoutTransform> 
       <ScaleTransform ScaleX="{Binding Path=Value,ElementName=zoomSlider}" ScaleY="{Binding Path=Value,ElementName=zoomSlider}"/> 
      </Grid.LayoutTransform> 
     </Grid> 
    </ScrollViewer> 
</ControlTemplate> 

,并使用它像这样:

<DataGrid Template="{StaticResource zoomableControl}" ...> 

我想说明的模板里面的ScrollViewer DataGrid中,但它并没有显示任何东西。有什么问题?

+1

在滚动查看器中托管DataGrid是否有意义?一个DataGrid有一个可滚动的内容部分 - 所以你最终会得到一个嵌套的滚动效果。 – ColinE 2012-07-29 06:56:45

+0

我只想知道如何在contentpresenter中显示datagrid? – 2012-07-29 07:01:29

回答

0
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
     <ContentPresenter > 
     </ContentPresenter> 
     <Slider Name="zoomSlider" Minimum="1" Maximum="100" Visibility="Hidden" Grid.Row="1"/> 
     <Grid.LayoutTransform> 
      <ScaleTransform ScaleX="{Binding Path=Value,ElementName=zoomSlider}" ScaleY="{Binding Path=Value,ElementName=zoomSlider}"/> 
     </Grid.LayoutTransform> 
    </Grid> 

你ContentPresenter和滑块都在同一行电网,从而滑块覆盖了它。我希望这将帮助不显示ContentPresenter。

+0

slider是隐藏的,我想确保datagrid可以放在contentpresenter中,或者我需要编写更多的代码? – 2012-07-29 08:08:34

+0

是的,它会将Slider的可见性设置为Collapsed,因为当您设置Visibility Hidden时,空间被控件覆盖,但控件不可见 – ethicallogics 2012-07-29 08:34:59