【发布时间】:2020-07-23 15:00:36
【问题描述】:
您好,我是 WPF 新手,我需要将文本框文本绑定到列表框项。
这是我的 XAML 代码: 我的 XAML 代码有 3 列。
- 第一列有一个按钮,当用户双击鼠标时,该按钮会自动生成文本框。
- 第二列就像画布显示文本框
- 第三列是列表框。
当用户点击stackpanel1中的按钮时,Textbox自动生成到Second_Stackpanel中。然后,用户在文本框中输入文本,该文本会自动绑定到 listboxitem(stackpanel3)。(用户将相同的文本更改为文本框,在该文本中也会更新相同的 listboxitem 索引。)
用户再次点击按钮自动生成另一个文本框,该文本绑定到下一个索引中的 listboxitem...
如何在 wpf 中将文本框绑定到 ListboxItems 请帮助我
我在 google 和 stackoverflow 网站上找到(列表框到文本框仅在此处绑定)。但我需要将文本框绑定到列表框。
<Window x:Class="WpfApp5.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:WpfApp5"
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
xmlns:Control="clr-namespace:Syncfusion.Windows.Tools.Controls;assembly=Syncfusion.Tools.Wpf"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Background="LightCoral" x:Name="stackpanel1">
<Button Height="40" Width="60" Content="Text" Background="Black" Foreground="Red"
HorizontalAlignment="Left" VerticalAlignment="Top" Margin="20" FontSize="20"
MouseDoubleClick="TextBox_DynamicallyGenerated_Mouse_DoubleClick"></Button>
</StackPanel>
<StackPanel Grid.Column="1" Background="White" x:Name="stackpanel2">
</StackPanel>
<StackPanel Grid.Column="2" Background="Gray" x:Name="stackpanel3">
<ListBox Height="300" x:Name="lstboxitems" Background="Aquamarine" Margin="20"></ListBox>
</StackPanel>
</Grid>
</Window>
这是我的代码隐藏
public partial class MainWindow : Window
{
public static TextBox textBox;
public MainWindow()
{
InitializeComponent();
}
private void TextBox_DynamicallyGenerated_Mouse_DoubleClick(object sender, MouseButtonEventArgs e)
{
textBox = new TextBox();
textBox.Text = "Enter Text Here";
textBox.Width = 120;
textBox.Height = 25;
textBox.Background = Brushes.White;
textBox.BorderBrush = Brushes.Red;
textBox.Name = "txtbox";
textBox.IsEnabled = false;
textBox.Foreground = Brushes.Red;
stackpanel2.Children.Add(textBox);
Canvas.SetLeft(textBox, e.GetPosition(stackpanel2).X);
Canvas.SetTop(textBox, e.GetPosition(stackpanel2).Y);
textBox.MouseDoubleClick += TextBox_MouseDoubleClick;
}
private void TextBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
textBox = sender as TextBox;
textBox.IsEnabled = true;
textBox.MouseLeave += TextBox_MouseLeave;
}
private void TextBox_MouseLeave(object sender, MouseEventArgs e)
{
textBox = sender as TextBox;
textBox.IsEnabled = false;
}
}
【问题讨论】:
-
您好,您必须在创建文本框时在代码隐藏中声明绑定。您是否有特定的原因要这样做,而不是将文本框放在 ListItem 中,以便您可以直接编辑它们?
-
我需要像绘画应用一样设计。用户在画布页面中拖放对象。然后用户在画布中生成文本并编辑文本。在列表框中显示。当用户编辑 textbox.text 列表框项目时也会自动更新
标签: wpf data-binding listboxitem