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

时间:2017-11-13 12:31:59

标签: c# wpf xaml

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

  

'在使用ItemsSource之前,项目集合必须为空。'

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

  

该物业" VisualTree"只能设置一次。

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

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

我的代码:

<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>

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

1 个答案:

答案 0 :(得分:0)

您应该在 ListBox声明下方添加按钮。 抛出您遇到的异常,因为可视树通过绑定填充,您无法再手动更改它。 您需要将所有这些内容放在某个布局容器(GridStackPanel等)中,因为您无法设置Window&#39; s / UserControl &#39; 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>