如何将文本框值绑定到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);
    }
}

如何将文本框值绑定到List<;int>;()

将Lister更改为公共属性公开的ObservableCollection,并确保它在某个地方初始化,并将文本框绑定到该属性。计数

在您的视图模型中:

    public ObservableCollection<int> Lister { get; set; }

在XAML中:

    <TextBlock Text="{Binding Lister.Count}" />

编辑:如果您想绑定到列表本身(而不是ListBox),可以执行以下操作:

  1. 将您的收藏更改为ObservableCollection<int>
  2. 将其公开为公共财产

    public ObservableCollection<int> Lister { get; private set; }

  3. 使用以下绑定

    <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属性绑定到文本框中的文本。

  1. 使用TextBlock而不是TextBox,因为您的用户可能很胖,他可以更改项目的数量
  2. 如果要使用绑定,建议改用ObservableCollection,因为List不会向绑定引擎报告集合更改
  3. 使用Shingetsu的建议