0

试图学习 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>
4

1 回答 1

3

定义一个类来保存项目

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

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

public ObservableCollection myListBoxRows<myListBoxRow> {get;set}

然后将ListBox's绑定ItemsSource到您的收藏

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

要获得所需的控件,请为 ListBox 定义一个 ItemTemplate

<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,因为到处都有大量这样的例子。为您将其联系在一起的关键部分是您的列表框/列表视图的数据模板

于 2013-09-24T20:07:44.040 回答