[英]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.