【发布时间】:2014-09-30 09:22:43
【问题描述】:
我有一个 TabItem,旁边有一个 DataGrid 和一个 Graph,这个 TabItem 基本上必须复制到 26 个不同的 TabItem 上,但每个 TabItem 都有不同的 DataSource。我想知道是否有办法将此页面与 DataGrid 和 Graph 放在单独的 XAML 页面上,然后在每个不同的 TabItem 上引用它。
如果可能的话,是否也可以将变量传递到此 XAML 页面,因为每个 DataGrid 将具有不同的 DataBinding 源。
页面代码:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.65*" />
<ColumnDefinition Width="0.35*" />
</Grid.ColumnDefinitions>
<TabControl HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="0" Grid.Column="1" TabStripPlacement="Bottom">
<TabItem Header="OPPERVLAKKEN" Controls:ControlsHelper.HeaderFontSize="14">
<GroupBox Header="waterbalans grafiek"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Canvas x:Name="OppervlakkenCanvas" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SizeChanged="GrafiekTekenen"/>
</GroupBox>
</TabItem>
<TabItem Header="VOORZIENINGEN" Controls:ControlsHelper.HeaderFontSize="14">
<GroupBox Header="waterbalans grafiek"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Canvas x:Name="VoorzieningenCanvas" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SizeChanged="GrafiekTekenen"/>
</GroupBox>
</TabItem>
</TabControl>
<TabControl HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="0" TabStripPlacement="Bottom">
<TabItem Header="RESULTAAT" Controls:ControlsHelper.HeaderFontSize="14">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<GroupBox Header="waterbalans afvoerend oppervlak" Grid.Row="0" Grid.Column="0"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<DataGrid ItemsSource="{Binding Path=Input.ResultatenCollectie[0].Oppervlakken}" AutoGenerateColumns="False"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Style="{DynamicResource ResultatenTabel}"
CanUserResizeColumns="False" CanUserResizeRows="False" CanUserReorderColumns="False" CanUserSortColumns="False"
FrozenColumnCount="2" Margin="0,0,0,0" IsReadOnly="True" ScrollViewer.HorizontalScrollBarVisibility="Visible">
<DataGrid.Columns>
<DataGridTextColumn Width="25" Header="#" Binding="{Binding Path=Resultaten[0].Int}" HeaderStyle="{StaticResource OmschrijvingHeader}" CellStyle="{StaticResource OmschrijvingCell}"/>
<DataGridTextColumn Width="*" Header="oppervlak" Binding="{Binding Path=Resultaten[1].String}" HeaderStyle="{StaticResource OmschrijvingHeader}" CellStyle="{StaticResource OmschrijvingCell}"/>
<DataGridTextColumn Width="100" Header="neerslag
 (m³)" Binding="{Binding Path=Resultaten[2].Double, StringFormat={}{0:f2}}"/>
<DataGridTextColumn Width="100" Header="verdampt
 (m³)" Binding="{Binding Path=Resultaten[3].Double, StringFormat={}{0:f2}}" HeaderStyle="{StaticResource VerdamptHeader}"/>
<DataGridTextColumn Width="125" Header="geinfiltreerd
 (m³)" Binding="{Binding Path=Resultaten[4].Double, StringFormat={}{0:f2}}" HeaderStyle="{StaticResource GeinfiltreerdHeader}"/>
<DataGridTextColumn Width="100" Header="geborgen
 (m³)" Binding="{Binding Path=Resultaten[5].Double, StringFormat={}{0:f2}}" HeaderStyle="{StaticResource GeborgenHeader}"/>
<DataGridTextColumn Width="125" Header="afgestroomd
 (m³)" Binding="{Binding Path=Resultaten[6].Double, StringFormat={}{0:f2}}" HeaderStyle="{StaticResource AfgestroomdHeader}"/>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
<GroupBox Header="waterbalans voorziening" Grid.Row="1" Grid.Column="0"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<DataGrid ItemsSource="{Binding Path=Input.ResultatenCollectie[0].Voorziening}" AutoGenerateColumns="False"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Style="{DynamicResource ResultatenTabel}"
CanUserResizeColumns="False" CanUserResizeRows="False" CanUserReorderColumns="False" CanUserSortColumns="False"
FrozenColumnCount="2" Margin="0,0,0,0" IsReadOnly="True" ScrollViewer.HorizontalScrollBarVisibility="Visible">
<DataGrid.Columns>
<DataGridTextColumn Width="25" Header="#" Binding="{Binding Path=Resultaten[0].Int}" HeaderStyle="{StaticResource OmschrijvingHeader}" CellStyle="{StaticResource OmschrijvingCell}"/>
<DataGridTextColumn Width="*" Header="element" Binding="{Binding Path=Resultaten[1].String}" HeaderStyle="{StaticResource OmschrijvingHeader}" CellStyle="{StaticResource OmschrijvingCell}"/>
<DataGridTextColumn Width="100" Header="inloop
 (m³)" Binding="{Binding Path=Resultaten[2].Double, StringFormat={}{0:f2}}"/>
<DataGridTextColumn Width="100" Header="geborgen
 (m³)" Binding="{Binding Path=Resultaten[3].Double, StringFormat={}{0:f2}}" HeaderStyle="{StaticResource GeborgenHeader}"/>
<DataGridTextColumn Width="100" Header="geledigd
 (m³)" Binding="{Binding Path=Resultaten[4].Double, StringFormat={}{0:f2}}" HeaderStyle="{StaticResource GeinfiltreerdHeader}"/>
<DataGridTextColumn Width="125" Header="overgelopen
 (m³)" Binding="{Binding Path=Resultaten[5].Double, StringFormat={}{0:f2}}" HeaderStyle="{StaticResource AfgestroomdHeader}"/>
<DataGridTextColumn Width="125" Header="overloop
frequentie" Binding="{Binding Path=Resultaten[6].Double, StringFormat={}{0:f0}}"/>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
</Grid>
</TabItem>
<TabItem Header="GEGEVENS" Controls:ControlsHelper.HeaderFontSize="14">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<GroupBox Header="gegevens afvoerend oppervlak" Grid.Row="0" Grid.Column="0"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<DataGrid ItemsSource="{Binding Path=Input.OppervlakGegevens}" AutoGenerateColumns="False"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Style="{DynamicResource ResultatenTabel}"
CanUserResizeColumns="False" CanUserResizeRows="False" CanUserReorderColumns="False" CanUserSortColumns="False"
FrozenColumnCount="1" Margin="0,0,0,0" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="omschrijving" Binding="{Binding Path=Gegevens[0].String}" HeaderStyle="{StaticResource OmschrijvingHeader}" CellStyle="{StaticResource OmschrijvingCell}"/>
<DataGridTextColumn Width="*" Header="grootte
oppervlak (m²)" Binding="{Binding Path=Gegevens[1].Double, StringFormat={}{0:f2}}"/>
<DataGridTextColumn Width="1.1*" Header="afstromings
vertraging (min⁻¹)" Binding="{Binding Path=Gegevens[2].Double, StringFormat={}{0:f2}}"/>
<DataGridTextColumn Width="*" Header="oppervlakte
berging (mm)" Binding="{Binding Path=Gegevens[3].Double, StringFormat={}{0:f2}}"/>
<DataGridTextColumn Width="*" Header="verdampings
factor (0-1)" Binding="{Binding Path=Gegevens[4].Double, StringFormat={}{0:f2}}"/>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
<GroupBox Header="gegevens voorziening" Grid.Row="1" Grid.Column="0"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<DataGrid ItemsSource="{Binding Path=Input.VoorzieningGegevens}" AutoGenerateColumns="False"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Style="{DynamicResource ResultatenTabel}"
CanUserResizeColumns="False" CanUserResizeRows="False" CanUserReorderColumns="False" CanUserSortColumns="False"
FrozenColumnCount="1" Margin="0,0,0,0" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="element" Binding="{Binding Path=Gegevens[0].String}" HeaderStyle="{StaticResource OmschrijvingHeader}" CellStyle="{StaticResource OmschrijvingCell}"/>
<DataGridTextColumn Width="*" Header="berging
(mm)" Binding="{Binding Path=Gegevens[1].Double, StringFormat={}{0:f2}}"/>
<DataGridTextColumn Width="*" Header="ledigings
capaciteit (mm/h)" Binding="{Binding Path=Gegevens[2].Double, StringFormat={}{0:f2}}"/>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
</Grid>
</TabItem>
</TabControl>
</Grid>
每个页面上唯一不同的是:
ItemsSource="{Binding Path=Input.ResultatenCollectie[0].Oppervlakken}"
0 必须是 1,然后是 2,等等
【问题讨论】: