0

我试图在不使用 Window.CommandBinding 的情况下从以下 ItemsControl 中删除一个元素。有没有更简单的方法来做到这一点?

XAML:

        <ItemsControl ItemsSource="{Binding Path=MyStringArray}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Button Content="Abcd"/>
                        <Button Content="-" Click="Button_Click_1"/>
                    </StackPanel>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>

如果没有更简单的方法,如何使用 Window.CommandBindings 来完成

另外,在这段代码中,如何使第一个按钮的宽度取屏幕的整个宽度减去第二个按钮的宽度?

4

1 回答 1

0

使用项目模板上的按钮删除项目控件中的项目的最简单方法是使用命令绑定,命令参数绑定到当前项目。然后,您从支持集合中删除当前项目。

要实现您正在寻找的按钮间距,请使用网格进行布局。创建两个GridColumns. 给第一个宽度,*第二个宽度Auto。假设您有ItemsControl正确的设置间距,这将实现您寻找的间距。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>

    <Button Grid.Column="0" Content="Abcd"/>
    <Button Grid.Column="1" Content="-" Command="{Binding YourCommand}" CommandParamter={Binding}/>
</Grid>

有关更完整的命令绑定示例,请参见此处,有关命令绑定的便利类,请参见此处。

于 2012-12-08T23:26:06.177 回答