【问题标题】:Dynamically Add listbox item to existing listbox item将列表框项动态添加到现有列表框项
【发布时间】:2017-03-20 10:02:31
【问题描述】:

我是 WPF 和 MVVM 的新手。 我有两个列表列表 A 和列表 B。第一个列表包含许多项目,第二个列表包含几个项目。 列表A中的每一项都按顺序执行。第一项将向打印机发送命令并从打印机获得响应,如果响应匹配则将移动到下一项。

项目形式列表 A 发送一个命令或多个命令。

所以,现在我想检查项目是发送一个命令还是多个命令。如果它正在发送多个命令,那么我想将下面 B 列表中的所有项目显示到相应 A 的列表和数据绑定中。

对于单个命令,我的代码运行良好

注意:列表 B 因项目而异。

以下是我在代码中使用的属性:

     private bool isMultiCommand;
    public bool IsMultiCommand 
    {
        get { return isMultiCommand; }
        set { SetProperty(ref isMultiCommand, value)};
    }


    public List<TestItem> MultipleCommandTestItemsList { get; set; }

     public string TestItemName { get; set; }


    private List<TestItem> testItemsList;
    public List<TestItem> TestItemsList
    { 
         get { return testItemsList; } 
         set { SetProperty(ref testItemsList, value); }
    }

This is my .xaml code

【问题讨论】:

  • 如果你想使用列表绑定更新,请使用 ObservableCollection,(谷歌是你的朋友)

标签: c# wpf xaml mvvm listbox


【解决方案1】:

要更新集合及其项目,您应该使用ObservableCollection&lt;TestItem&gt; 而不是List&lt;TestItem&gt;TestItem 也应该实现 INotifyPropertyChanged 以在它发生变化时通知。

【讨论】:

    【解决方案2】:

    XAML 设计:

    <Grid>
    
        <ListBox x:Name="Listbox1" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100"/>
    
        <Button x:Name="Add" Content="ADD" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="105,10,0,0" Click="Add_Click"/>
    
        <Button Content="REMOVE" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="105,45,0,0" Click="Remove_Click"/>
    
        <Label Content="Add Listitem" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="105,74,0,0"/>
        <TextBox x:Name="textbox1" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="84" Margin="105,100,0,0"/>
    
    </Grid>
    

    XAML Design.cs

    添加命名空间: using System.Collections.ObjectModel;

    private ObservableCollection<string> listitem;
        public Window5()
        {
            InitializeComponent();
            listitem = new ObservableCollection<string> { "ListItem 1", "ListItem 2" };
            Listbox1.ItemsSource = listitem;
        }
    
        private void Add_Click(object sender, RoutedEventArgs e)
        {
            listitem.Insert(listitem.Count, textbox1.Text);
            textbox1.Clear();
        }
    
        private void Remove_Click(object sender, RoutedEventArgs e)
        {
            int index = Listbox1.SelectedIndex;
            listitem.RemoveAt(Listbox1.SelectedIndex);
        }
    

    【讨论】:

      猜你喜欢
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多