UserControl中的ItemsControl未更新

本文关键字:更新 ItemsControl 中的 UserControl | 更新日期: 2023-09-27 18:20:15

我的UserControl有问题,源代码如下:

[ContentProperty("SetContent")]
public partial class HeaderContainer : UserControl
{
    // Header region
    public FrameworkElement SetContent
    {
        get { return (FrameworkElement)GetValue(SetContentProperty); }
        set { SetValue(SetContentProperty, value); }
    }
    public static readonly DependencyProperty SetContentProperty =
           DependencyProperty.Register("SetContent", typeof(FrameworkElement), 
                                       typeof(HeaderContainer), new PropertyMetadata(null));
    public HeaderContainer()
    {
        InitializeComponent();
        DataContext = this;
    }
}

这是我的XAML

<StackPanel>
    <Border>
        <TextBlock Text="{Binding Header}" />
    </Border>
    <ContentPresenter Content="{Binding SetContent}"/>
</StackPanel>

这是我的问题:

<c:HeaderContainer Header="List">
  <ItemsControl ItemsSource="{Binding ObjectList}" >
    <ItemsControl.ItemTemplate>
      <DataTemplate>
         <StackPanel>
           <TextBlock Text="{Binding DisplayName}"/>
           <TextBlock Text="{Binding SecondLine}" Foreground="Gray" />
         </StackPanel>
       </DataTemplate>
     </ItemsControl.ItemTemplate>
   </ItemsControl>
 </c:HeaderContainer>

当我在XAML中添加内容时,Itemscontrol本身也在工作,UserControl也在工作。问题是,当我在ObjectList的HeaderContainer中添加Items时,什么都不会发生。我哪里想错了?

UserControl中的ItemsControl未更新

这里很难确定确切的问题,因为您的代码不完整。您有一个SetContent依赖属性,但是您的示例用法没有使用它。我认为您的方法应该是子类ContentControl,将Header属性添加到其中。

或者。。。只需使用Silverlight Toolkit HeaderedContentControl,我认为它正是您想要实现的!