【发布时间】:2020-01-06 19:16:40
【问题描述】:
所以,我有一个名为“valoresPanel”的主要WrapPanel。当我开始运行时,我需要单击标记为“2”的Button(如下),并且TextBox 需要出现在标记为“1”的WrapPanel 中,这是在运行时创建的。
这是我现在的“+按钮”代码:
void novoValor_Click(object sender, RoutedEventArgs e)
{
WrapPanel wpValores = new WrapPanel();
Button deleteValor = new Button();
TextBox txtValor = new TextBox();
deleteValor.Height = 25;
deleteValor.Width = 25;
deleteValor.Content = "X";
txtValor.Height = 25;
txtValor.Width = 70;
txtValor.Margin = new Thickness(0, 0, 8, 0);
wpValores.Height = 25;
wpValores.Width = 105;
wpValores.Children.Add(deleteValor);
wpValores.Children.Add(txtValor);
valoresPanel.Children.Add(wpValores);
deleteValor.Click += deleteValor2_Click;
}
所以,我更新了我的代码,每个项目只使用一个 WrapPanel,现在我可以添加一个项目,添加值并删除具有各自值的项目,但我不能删除特定值,这是我现在的代码:
this image will help to understand
void novoValor_Click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
WrapPanel wpFather = btn.Parent as WrapPanel;
WrapPanel wpValue = new WrapPanel();
Button deleteValue = new Button();
TextBox txtValue = new TextBox();
wpValue.Height = 25;
wpValue.Width = 105;
deleteValue.Height = 25;
deleteValue.Width = 25;
deleteValue.Content = "-";
txtValue.Height = 25;
txtValue.Width = 70;
txtValue.Margin = new Thickness(0, 0, 8, 0);
wpValue.Children.Add(deleteValue);
wpValue.Children.Add(txtValue);
wpFather.Children.Add(wpValue);
deleteValue.Click += deleteValor_Click;
}
void deleteValor_Click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
WrapPanel panel = btn.Parent as WrapPanel;
entradasPanel.Children.Remove(panel);
}
如果有人需要任何其他信息,我愿意尽快发送!
【问题讨论】:
-
那么,您到底遇到了什么问题?什么不工作?
-
valoresPanel的宽度似乎是有限的,否则你添加到它的孩子应该放在右边,而不是像你的图片那样在它下面。什么包含valoresPanel?我们真的需要看看整个视觉树是什么样子的。您能否使用可视化树中实际存在的所有元素创建一个展示问题的 XAML 表示形式? -
你对
TextBox元素的输入做了什么?如何得到它?您的 C# 方法是错误的。您应该创建一个ListView,它的WrapPanel为ItemsPanel。然后到ListView.ItemsSource绑定一个ObservableCollection的数据模型。通过为ListView.ItemTemplate定义DataTemplate,您可以使数据项显示为带有Button的TextBox,其中TextBox绑定到此项的数据模型。通过按删除按钮,您只需从ObservaleColection(ItemsSource的ListView)中删除此数据模型。 -
@andrew 这是因为我使用所有行空间创建了一个 WrapPanel,如果我减小宽度,新的子项将出现在右侧,但是当我单击第一个“x”时我需要它清理第一个“Entrada”及其所有值(“valores”)。
-
@KeithStein 我需要创建一个新的“entrada”,并为其各自的值(“valores”)留出空间,当我单击第一个“X”按钮时,我需要它来清理“entrada”空间及其所有各自的“价值”。
标签: c# wpf wpf-controls