在 xaml 中的绑定列表框外部添加按钮



>我遇到了一个问题 - 我创建了一个项目,通过使用绑定到列表框将我的代码绑定到 xaml。但是,它在我未来的代码中产生了一些问题 - 我想在我的表单中添加按钮,但我遇到了一些错误。

"在使用 ItemsSource 之前,Items 集合必须为空。">

当我尝试绑定可绑定列表框之外的内容时,会发生此错误。

属性"可视化树"只能设置一次。

当我尝试在列表框下方添加按钮时,会发生此错误。

有人可以指导我如何解决这个问题吗?

我的代码:

<ListBox x:Name="ItemsControl1">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Columns="5">
            </UniformGrid>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Border BorderBrush="Black" BorderThickness="2" Width="Auto" Height="Auto">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Number}"/>
                    <Image Source="{Binding Source}" Margin="0,0,5,0"/>
                </StackPanel>
            </Border>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

理想的结果是列表框下的按钮。

您应该在

声明下方添加按钮ListBox。您面临的异常会引发,因为可视化树是通过绑定填充的,您无法再手动更改它。你需要把所有这些东西放在一些布局容器(GridStackPanel等(中,因为你不能设置WindowUserControl Content属性两次:

<StackPanel>
    <ListBox x:Name="ItemsControl1">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Columns="5">
                </UniformGrid>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Border BorderBrush="Black" BorderThickness="2" Width="Auto" Height="Auto">
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Number}"/>
                        <Image Source="{Binding Source}" Margin="0,0,5,0"/>
                    </StackPanel>
                </Border>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
    <Button/>
</StackPanel>

最新更新