繁体   English   中英

WPF TabControl,内容控件项绑定

[英]WPF TabControl , Content Control Items Binding

我正在尝试将“内容控件项”控件绑定到“选项卡项标题”,但不起作用,如何正确绑定。

我想将Path = Items.Count绑定到TabItem标题模板中的Texblock

<TabControl>
    <TabItem>
        <ContentPresenter Content="{Binding Items, Mode=OneTime}">
            <ContentPresenter.ContentTemplate>
                <DataTemplate>
                    <ListBox ItemsSource="{Binding}"/>
                </DataTemplate>
            </ContentPresenter.ContentTemplate>
        </ContentPresenter>
        <TabItem.HeaderTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="Item Count"/>
                    <TextBlock Text="{Binding Path=Items.Count, RelativeSource={RelativeSource FindAncestor, AncestorType=ContentControl}}"/>
                </StackPanel>
            </DataTemplate>
        </TabItem.HeaderTemplate>
    </TabItem>        
</TabControl>

背后的代码

public partial class MainWindow : Window
    {
        private static ObservableCollection<string> items;
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
            items = new ObservableCollection<string>();
            items.Add("test1");
            items.Add("test2");
            items.Add("test3");
            items.Add("test4");

        }
        public static ObservableCollection<string> Items
        {
            get { return items; }
        }
    }

想法是将Header绑定到集合,然后仅绑定textblock进行计数。

<TabControl>
        <TabItem  Header="{Binding Items}">
            <ContentPresenter Content="{Binding Items, Mode=OneTime}">
                <ContentPresenter.ContentTemplate>
                    <DataTemplate>
                        <ListBox ItemsSource="{Binding}" />
                    </DataTemplate>
                </ContentPresenter.ContentTemplate>
            </ContentPresenter>
            <TabItem.HeaderTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Name="panel">
                        <TextBlock Text="Item Count"/>
                        <TextBlock Text="{Binding Count, StringFormat={}  {0}}"/>
                    </StackPanel>
                </DataTemplate>
            </TabItem.HeaderTemplate>
        </TabItem>
    </TabControl>

假设您在WPF窗口中,则将您的相对源更改为将Count绑定到Window而不是ContentControl即可。 如果是UserControl,请将其更改为等。您可能还希望在“ Item Count”之后放置一个空格...

<TextBlock Text="{Binding Items.Count, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}"/>

暂无
暂无

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

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