将其他项目添加到自定义列表框/列表视图以及用户如何添加自己的项目

本文关键字:列表 项目 添加 用户 何添加 自己的 视图 其他 自定义 | 更新日期: 2023-09-27 18:32:43

试图学习WPF,这让我发疯了。所以我正在尝试做一些类似我在这里发布的图片的事情。但我只能将组合框、文本、复选框放在一起,而不是并排......我该怎么做?

我还想出了如果用户按下按钮,如何将"文本"添加到列表框中,但我需要它,以便当他们从文本框添加文本时。组合框、复选框和按钮随之添加。但我不知道该怎么做。

假设我必须为这些事情做一个类。但是,如果我在 XAML 中对其进行编码,我该如何执行此操作?这个 WPF 让我感到困惑。

<ListBox HorizontalAlignment="Left" Height="195" Margin="25,345,0,0" VerticalAlignment="Top" Width="650">
                <ListBoxItem>
                        <StackPanel Orientation="Horizontal" Height="45"> <!--Stacks Items Horizontally-->
                            <ComboBox Width="100" Height="30">
                                <ComboBoxItem IsSelected="True">DirecTV</ComboBoxItem>
                                <ComboBoxItem>Hyundai</ComboBoxItem>
                                <ComboBoxItem>None</ComboBoxItem>
                            </ComboBox>
                            <TextBox Width="445" Height="30" Text="Follow RedZone on Twitter" VerticalContentAlignment="Center"/>
                            <CheckBox IsChecked="True" VerticalAlignment="Center">
                                <CheckBox.LayoutTransform>
                                    <ScaleTransform ScaleX="1.5" ScaleY="1.5"></ScaleTransform>
                                </CheckBox.LayoutTransform>
                            </CheckBox>
                        <Button Content="Delete"  Height="Auto" Width="Auto" HorizontalAlignment="Right" VerticalAlignment="Top" VerticalContentAlignment="Top"/>
                    </StackPanel>
                </ListBoxItem>
            </ListBox>

将其他项目添加到自定义列表框/列表视图以及用户如何添加自己的项目

定义一个类来保存项目

public class myListBoxRow
{
    public string comboBoxSelection {get;set;}
    public string textBlockText {get;set;}
    public bool checkBoxChecked {get;set;}
}

现在在某处(通常在 ViewModel 中)定义ObservableCollectionList

public ObservableCollection myListBoxRows<myListBoxRow> {get;set}

然后将ListBoxItemsSource绑定到您的收藏中

<ListBox ItemsSource="{Binding myListBoxRows}" .../>

若要获取所需的控件,请为列表框定义项模板

<ListBox ItemsSource="{Binding myListBoxRows}" ...>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <ComboBox ItemsSource="{Binding cboItems}" Width="50" SelectedItem="{Binding comboBoxSelection}" />
                <TextBlock Text="{Binding textBlockText}"></TextBlock>
                <CheckBox IsChecked="{Binding checkBoxChecked}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

在 WPF 中研究 MVVM,因为到处都有大量这样的例子。将为您联系在一起的关键部分是列表框/列表视图的数据模板