如何将文本框值绑定到List<;int>;()
本文关键字:int lt gt List 文本 绑定 | 更新日期: 2023-09-27 18:28:19
因此,如果列表中有5个值,则文本框显示"5"。
最好的方法是什么?
具体来说,在后面的代码中,"lister"的计数将显示在textBox1中。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
List<int> lister = new List<int>();
private void button1_Click(object sender, RoutedEventArgs e)
{
lister.Add(1);
}
}
将Lister更改为公共属性公开的ObservableCollection,并确保它在某个地方初始化,并将文本框绑定到该属性。计数
在您的视图模型中:
public ObservableCollection<int> Lister { get; set; }
在XAML中:
<TextBlock Text="{Binding Lister.Count}" />
编辑:如果您想绑定到列表本身(而不是ListBox
),可以执行以下操作:
- 将您的收藏更改为
ObservableCollection<int>
-
将其公开为公共财产
public ObservableCollection<int> Lister { get; private set; }
-
使用以下绑定
<TextBlock Text="{Binding Lister.Count, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}" />
此绑定表示"找到类型Window
的第一个父级,并在其上查找公共Lister
属性"
将属性设置为ObservableCollection<T>
意味着它将在更改时自动通知视图。
原件:根本不需要使用代码隐藏。只需在XAML 中使用以下内容
<ListBox x:Name="MyListBox" />
<TextBlock Text="{Binding Items.Count, ElementName=MyListBox}" />
通过这种方式,Binding框架可以处理所有内容,并且您不需要手动"刷新"文本块中的值。
每次单击按钮时,刷新文本框。
private void button1_Click(object sender, RoutedEventArgs e)
{
lister.Add(1);
MyTextBox.text = lister.Count.ToString();
}
注意,这不是确切的代码,它是用来演示如何完成的。
如果您想使用代码实现这一点,只需执行以下操作:
private void button1_Click(object sender, RoutedEventArgs e)
{
lister.Add(1);
textBox.Text = lister.Count.ToString();
}
我建议您考虑使用WPF数据绑定和MVVM架构。然后,您可以将列表的Count
属性绑定到文本框中的文本。
- 使用TextBlock而不是TextBox,因为您的用户可能很胖,他可以更改项目的数量
- 如果要使用绑定,建议改用ObservableCollection,因为List不会向绑定引擎报告集合更改
- 使用Shingetsu的建议