繁体   English   中英

WPF如何将Tabitem与列表绑定

[英]WPF how to bind a tabitem with a list

我有以下问题:

我在应用程序中加载了一些数据,需要将这些数据放入选项卡控件中。

数据格式为:

class objectType1
{
    string property_1;
    string prorerty_2;
}

class mainObject
{
    string mainProperty_1;
    string mainProperty_2;
    List<objectType1> objectsList;
}

并且所有数据都加载到类型为的对象中

List<mainObject> myListofObjects

到目前为止,我已经设法针对myListofObjects项目创建了tabitems(即,如果列表具有5个对象,则创建了5个带有包含信息mainProperty_1和mainProperty_2的标题的选项卡),现在我需要将每个objectList中包含的数据添加到各自的列表中标签...

mainProperty_1代表图像,必须加载...

<TabControl x:Name="_DataList" Margin="10">
        <!-- Header -->
        <TabControl.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Image Height="18" Source="{Binding mainProperty_1/>
                    <TextBlock Text="{Binding mainProperty_2}" Margin="2,0,0,0" />
                </StackPanel>
            </DataTemplate>
        </TabControl.ItemTemplate>
        <!-- Content -->
        <TabControl.ContentTemplate>
            <DataTemplate x:Name="objectDataTemplate">
                <Grid Margin="5">
                    <StackPanel Orientation="Horizontal">
                        <Image Source="{Binding property_1}" ToolTip="{Binding property_2}" IsHitTestVisible="false" Stretch="Uniform"/>
                    </StackPanel>
                </Grid>
            </DataTemplate>
        </TabControl.ContentTemplate>
    </TabControl>

我用后面的代码将数据传递给tabcontrol

_DataList.ItemsSource = myListofObjects;

这不适用于内容...

标头加载正常(图片和文字都...)

任何人有任何想法怎么做?

非常感谢!

1)您是否尝试通过绑定连接到列表?

var b = new Binding("myListofObjects");
BindingOperations.SetBinding(_DataList, ItemsControl.ItemsSourceProperty, b);

2)如果使用绑定,是否设置了适当的DataContext?

您的ContentTemplate似乎是错误的:

 <TabControl x:Name="_DataList" Margin="10">
    <!-- Header -->
    <TabControl.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Image Height="18" Source="{Binding mainProperty_1/>
                <TextBlock Text="{Binding mainProperty_2}" Margin="2,0,0,0" />
            </StackPanel>
        </DataTemplate>
    </TabControl.ItemTemplate>
    <!-- Content -->
    <TabControl.ContentTemplate><!-- its bound to one mainObject -->
        <DataTemplate x:Name="objectDataTemplate">
 <!-- if you wanna bind to something from your objectsList you have to threat it like a list, cause it is :) -->

<ListBox Itemssource={Binding objectsList}>
<ListBox.ItemTemplate>
    <DataTemplate DataType="{x:Type objectType1}">
       <StackPanel Orientation="Horizontal">
           <Image Source="{Binding property_1}" ToolTip="{Binding property_2}" IsHitTestVisible="false" Stretch="Uniform"/>
       </StackPanel>
    </DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM