将其他项目添加到自定义列表框/列表视图以及用户如何添加自己的项目
本文关键字:列表 项目 添加 用户 何添加 自己的 视图 其他 自定义 | 更新日期: 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 中)定义ObservableCollection
或List
public ObservableCollection myListBoxRows<myListBoxRow> {get;set}
然后将ListBox
的ItemsSource
绑定到您的收藏中
<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,因为到处都有大量这样的例子。将为您联系在一起的关键部分是列表框/列表视图的数据模板