小编Ste*_*han的帖子

CompositeCollection内部的绑定

我想创建一个具有多个“静态” TabItem(在XAML中明确键入)和多个动态添加的TabItem的TabControl。为此,我尝试使用CompositeCollection作为TabControl.ItemSource。

样例代码:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        >
  <Window.Resources>
    <x:Array x:Key="SomeTexts" x:Type="sys:String">
      <sys:String>Text1</sys:String>
      <sys:String>Text2</sys:String>
    </x:Array>
  </Window.Resources>

  <TabControl>
    <TabControl.ItemsSource>
      <CompositeCollection>
        <TabItem Header="Test">
          <StackPanel>
            <TextBlock x:Name="MyText" Text="Blah" />
            <TextBlock Text="{Binding Text, ElementName=MyText}" />
          </StackPanel>
        </TabItem>
        <CollectionContainer Collection="{StaticResource SomeTexts}" />
      </CompositeCollection>
    </TabControl.ItemsSource>
  </TabControl>
</Window>
Run Code Online (Sandbox Code Playgroud)

此示例具有一个固定的选项卡项目和三个“动态”的选项卡项目(请注意,“ SomeTexts”是固定数组,在此只是为了简化示例;在实际代码中,它将是一个动态集合)。

该示例适用于“ ElementName”绑定,但不起作用。我想这是因为CompositeCollection不是Freezable(另请参见为什么CompositeCollection不是Freezable?)。

有没有人有解决方案?

wpf binding

5
推荐指数
1
解决办法
2980
查看次数

标签 统计

binding ×1

wpf ×1