单击按钮后添加到显示的列表

时间:2017-08-16 06:31:26

标签: c# wpf onclick click

我正在尝试使用WPF C#编写销售点类型界面。我想要完成的是当点击右边的按钮时,信息被添加到(文本框?某种容器?)左边。这将是您可以在订单上看到列举的项目列表的位置。我的猜测是它会涉及一个实例化的类/数组/集合或类似的东西。最终目标将包括能够将信息绑定到不同的服务员等,但现在的主要焦点是在单击按钮时向左侧区域添加内容。我是UI新手,但有一些Java经验。这是我目前的情况:

Basic Point of Sale Program

我对删除项目并不十分担心,因为一旦我弄清楚如何添加,就应该明白如何删除。

我所拥有的编码都是视觉的,我怀疑它是非常有用的,但无论如何都会提供它:

<bean id="aspect" class="com.zhuyiren.Main"/>

<aop:config>
    <aop:aspect ref="aspect">
        <aop:after-throwing method="after" throwing="ex" pointcut="execution(* com.zhuyiren.service..*.*(..)),args(ex)"/>
    </aop:aspect>
</aop:config>

我花了几天时间在YouTube上搜索,试图找到答案并找到一些关于数据绑定的视频,但这些视频通常只显示一个绑定到文本框的滑块值。还有一系列关于如何构建聊天应用程序的系列文章,但我要么在那里找不到它,要么不明白哪个组件是我想要的。

这似乎是一个简单的概念,但即使是简单的概念也可以有相当精细的实现。任何和所有帮助表示赞赏。

谢谢!

3 个答案:

答案 0 :(得分:2)

您需要一些ItemsControl来显示项目集合,例如ListBox

真实的WPF​​应用程序需要data binding和MVVM,所以,首先,我强烈建议您阅读这些内容。

简而言之,您需要一个视图模型来保存项目集合。 &#34;添加&#34;按钮将触发command,这将向项目集合添加项目(&#34;删除&#34;将分别删除项目)。项目集合将绑定到ListBox或类似的东西。

答案 1 :(得分:1)

Dennis的答案是最好的 - 您应该阅读数据绑定和MVVM以获得最佳和最干净的解决方案。

快速完成您所要求的工作......

1 - 为TextBlock分配名称。

<TextBlock x:Name="MyTextBox" HorizontalAlignment="Center" Margin="10" />

2 - 在按钮单击事件中,您可以使用该名称并设置.Text属性。

//Put this in your ButtonClick method
MyTextBox.Text += "\nInstance of Text 1";

答案 2 :(得分:0)

Jeremy H.,试试这个

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication2"
        xmlns:GUI="clr-namespace:GUILIb;assembly=GUILIb"
        mc:Ignorable="d"
        Title="MainWindow" x:Name="MyWindow" Height="350" Width="525" DataContext="{Binding ElementName=MyWindow}">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <Border BorderBrush="Black" BorderThickness="0 0 2 0">
            <StackPanel Grid.Column="0" Margin="10">
                <Button Margin="10" Height="20" Content="Remove selected entry"/>
                <Border BorderBrush="Red" BorderThickness="2">
                    <ListBox ItemsSource="{Binding Items}"/>
                </Border>

            </StackPanel>
        </Border>

        <StackPanel
        Grid.Column="1" 
            Margin="10"
            VerticalAlignment="Center"
                >

            <Button
            x:Name="Button1"
            Margin="0 0 0 5"
            Content="Add instance of text"
            Height="70"
            Width="120"
            />

            <Button
            x:Name="Button2"
            Margin="0 5 0 0"
            Height="70"
            Width="120"
            Content="Add different instance"
            />

        </StackPanel>
    </Grid>
</Window>

和背后的代码

ObservableCollection<string> _items = new ObservableCollection<string>()
        {
            "item 1", "item 2", "item 3"
        };
        public ObservableCollection<string> Items
        {
            get { return _items; }
        }

您必须实施INotifyPropertyChanged,以便在更改后动态更新UI中的列表。