我正在尝试使用WPF C#编写销售点类型界面。我想要完成的是当点击右边的按钮时,信息被添加到(文本框?某种容器?)左边。这将是您可以在订单上看到列举的项目列表的位置。我的猜测是它会涉及一个实例化的类/数组/集合或类似的东西。最终目标将包括能够将信息绑定到不同的服务员等,但现在的主要焦点是在单击按钮时向左侧区域添加内容。我是UI新手,但有一些Java经验。这是我目前的情况:
我对删除项目并不十分担心,因为一旦我弄清楚如何添加,就应该明白如何删除。
我所拥有的编码都是视觉的,我怀疑它是非常有用的,但无论如何都会提供它:
<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上搜索,试图找到答案并找到一些关于数据绑定的视频,但这些视频通常只显示一个绑定到文本框的滑块值。还有一系列关于如何构建聊天应用程序的系列文章,但我要么在那里找不到它,要么不明白哪个组件是我想要的。
这似乎是一个简单的概念,但即使是简单的概念也可以有相当精细的实现。任何和所有帮助表示赞赏。
谢谢!
答案 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中的列表。