WPF - 动态TabControls中的动态内容

时间:2014-06-05 13:01:12

标签: c# wpf user-controls tabcontrol radgridview

即使是标题也会让我发笑......

所以,到目前为止,我的代码看起来像这样:

<Grid>
    <WrapPanel x:Name="wpVTList" Margin="70,356,1541,150">
        <TabControl ItemsSource="{Binding VTList}"
                    TabStripPlacement="Left"
                    Padding="0,10,0,0"
                    x:Name="tcVTList">
            <TabControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}"
                               Width="270"
                               FontSize="20"
                               FontFamily="Calibri"
                               Margin="0,5,0,5"
                               Padding="30,0,0,0"
                               Height="27"
                               VerticalAlignment="Center"
                               HorizontalAlignment="Left" MouseUp="tbkVTList_MouseUp" />
                </DataTemplate>
            </TabControl.ItemTemplate>
            <TabControl.ContentTemplate>
                <DataTemplate>
                    <TextBlock />
                </DataTemplate>
            </TabControl.ContentTemplate>
        </TabControl>
    </WrapPanel>

这是我的MainWindow,或者至少是显示所有内容的窗口,我创建了与ObservableCollection字符串一样多的选项卡,它应该由查询或其他东西动态填充。

此外,我已经创建了两个海关用户控件:

<UserControl x:Class="Configurateur.Configuration.TableauEcrans"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
         mc:Ignorable="d"
         d:DesignHeight="175" Width="470">
<Grid>
    <Grid.Resources>
        ...
    </Grid.Resources>

    <telerik:RadGridView ItemsSource="{Binding CamerasList}"
                         AutoGenerateColumns="False"
                         ClipToBounds="True"
                         IsSynchronizedWithCurrentItem="True"
                         telerik:StyleManager.Theme="Windows8"
                         CanUserFreezeColumns="False">
        <telerik:RadGridView.Columns>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"
                                        Header="Name"
                                        UniqueName="Name"
                                        Width="*"
                                        HeaderTextAlignment="Center"  />
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Price}"
                                        Header="Price"
                                        UniqueName="Price"
                                        Width="65"
                                        HeaderTextAlignment="Center" />
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Amount}"
                                        Header="Amount"
                                        UniqueName="Amount"
                                        Width="100"
                                        HeaderTextAlignment="Center" />
        </telerik:RadGridView.Columns>
    </telerik:RadGridView>
</Grid>
</UserControl>

然后,回到我的MainWindow,我可以通过添加:

来使用它们
<Grid x:Name="gridTableaux" Margin="376,356,0,0">
    <custom:UCCameras Margin="10,41,944,453" />
    <custom:UCOwner Margin="10,411,1054,0" />
</Grid>

在我的wrapPanel之后。它有效,他们都在这里。我把它们放在一个网格中,以划分我的MainWindow中动态区域的位置。每个userControl都是一个gridView,gridView由一个类的ObservableCollection填充(即Camera.cs),其中包含Name这样的属性,与我UC中的列绑定。

我想要做的是在MainWindow中为每个选项卡显示一个具有不同信息的新userControl。例如,如果用户在第一个选项卡中填充gridView中的一行,则他必须找到一个空的gridView,如果他选择另一个选项卡。然后,如果他回到第一个标签,他应该在开始时看到他在gridView中写的内容。

1)我不会真正看到如何在每个标签中使用我的UC,因为它们是动态创建的。我不知道将它们放在我的代码中的位置,因为我希望它们位于网格中(界定一切发生的区域),在MainWindow的另一侧,或者其他类型。

2)我绝对不知道如何在每个标签之间保存这些输入的值,以及如何选择我可以使用哪一个(因为动态方式)。

我想......每个标签都是一个类的OC列表(ObservableCollection对我所做的一切都很好)。所以我的类是一个相机(=我的gridView的一行),其属性(=我的行中的单元格),包含在ObservableCollection(=我的gridView具有的内容)中,包含在ObservableCollection&gt;中。 (=我的标签,里面有主网格)。

有什么想法吗?我希望我做了一些对我尝试做的事情有意义的事情,我在WPF中仍然是新手。也许是UC的OC ..?

感谢您的帮助!

0 个答案:

没有答案