CTurcotte Ответов: 1

WPF - TabControl с Datagrid в каждом TabItem


Привет,

Я искал вокруг, не находя решения, так что вот я иду.

У меня есть окна с центром, которые содержат элемент управления UserControl, который заполнит общую область моего приложения.

У меня есть TabControl с несколькими TabItem. В каждом TabItem я должен показать различные элементы управления, включая Datagrids.

Вот пример кода моего второго TabItem.
<TabItem Header="Suivi" IsSelected="True">
           <Grid Background="#FFE5E5E5" >
               <DataGrid x:Name="dgSuivi" ItemsSource="{Binding Source=Suivi}" AutoGenerateColumns="False" CanUserAddRows="False"  >
                   <DataGrid.Columns>
                       <DataGridTextColumn Header="Suivi" Binding="{Binding COD_NOM }" Width="500" />
                       <DataGridTextColumn Header="Date planifiée" Binding="{Binding DAT_PLAN}" Width="150" />
                       <DataGridTextColumn Header="Date révisée" Binding="{Binding DAT_REVIS}" Width="150" />
                       <DataGridTextColumn Header="Date réelle" Binding="{Binding DAT_REEL}" Width="150" />
                   </DataGrid.Columns>
               </DataGrid>
           </Grid>
       </TabItem>


Мой код позади имеет заполненное свойство под названием Suivi.

Public Property Suivi As ObservableCollection(Of MyType)


а MyType-это следующий класс:

Public Class EntiteSgcrSuivi

     Property COD_NOM as String

     Property DAT_PLAN as DateTime

     Property DAT_REVIS as DateTime

     Property DAT_REEL as DateTime

     Property DAT_RAPPEL as DateTime

     Public Sub New()

      COD_NOM_DAT = Nothing
      DAT_PLAN = New System.DateTime(9999, 1, 1)
      DAT_REVIS = New System.DateTime(9999, 1, 1)
      DAT_REEL = New System.DateTime(9999, 1, 1)

     End Sub

    End Class

Когда я переключаюсь на второй TabItem (Suivi), datagrid заполняется пустыми строками.

[Изображение datagrid не заполняется](http://i.imgur.com/gzyvc0G.png)

Я искал, чтобы исправить это, но мне кажется, что я упускаю здесь понятие.
Моя привязка сделана правильно?

1 Ответов

Рейтинг:
2

Faisal Fagihi

У меня была та же проблема и вот мое решение:

- Переместить сетки данных для элемента управления TabControl ресурс, как тигры.

<TabControl>
    <TabControl.Resources>
        <Style x:Key="Tab1" TargetType="TabItem">
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Content">
                        <Setter.Value>
                            <DataGrid Background="#FFF" ItemsSource="{Binding MyListForTab1}" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>

        <Style x:Key="Tab2" TargetType="TabItem">
            <Setter Property="Padding" Value="16 6" />
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Content">
                        <Setter.Value>
                            <DataGrid Background="#FFF" ItemsSource="{Binding MyListForTab2}" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TabControl.Resources>

    <!--Tab1-->
    <TabItem Style="{StaticResource Tab1}" Header="Tab1" />

    <!--Tab2-->
    <TabItem Style="{StaticResource Tab2}" Header="Tab2" />

</TabControl>