将一个ObservableCollection绑定到两个ItemsControl的ItemsSource属性,仅更新最后一个ItemsControl

时间:2018-06-26 16:00:09

标签: wpf data-binding observablecollection itemscontrol

我正在尝试将ObservableCollection绑定到两个ItemsControl控件,但是实际上最后一个ItemsControl正在更新。

XAML:

    <Border BorderThickness="2" BorderBrush="Red">
    <StackPanel>
        <Grid Margin="0 10 0 0">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>

            <ItemsControl Grid.Column="0" Tag="LeftSideItemsControl" ItemsSource="{Binding Items, Mode=OneWay}"/>
            <ItemsControl Grid.Column="1" Tag="RightSideItemsControl" ItemsSource="{Binding Items, Mode=OneWay}"/>
        </Grid>
    </StackPanel>
</Border>

将项目添加到ObservableCollection后面的代码:

public partial class DiagramContainer : UserControl
{
    public ObservableCollection<UIElement> Items { get; set; }

    public DiagramContainer()
    {
        InitializeComponent();
        DataContext = this;

        Items = new ObservableCollection<UIElement>();
        Items.Add(new Button() { Content = "TEST" });
        Items.Add(new TextBox() { Text = "TEST" });
    }
}

运行应用程序时,我得到以下结果:

unexpected result

右边的ItemsControl(第二列)是要更新的,而第一个没有。

1 个答案:

答案 0 :(得分:1)

您正在尝试将相同的UIElement添加到两个不同的逻辑父级。这是不可能的。