Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:ListBox SelectedItems在选择更改时未更新或正在累积_C#_Wpf_Xaml_Listbox - Fatal编程技术网

C# WPF:ListBox SelectedItems在选择更改时未更新或正在累积

C# WPF:ListBox SelectedItems在选择更改时未更新或正在累积,c#,wpf,xaml,listbox,C#,Wpf,Xaml,Listbox,我遇到了奇怪的现象。如果我做了大量的网络搜索,我就找不到解决方案。 我使用WPF,VS2010引擎。GUI主要由四个列表框组成 <StackPanel Orientation="Vertical" Grid.Column="0"> <Label HorizontalAlignment="Center">Goods</Label> <ListBox Name="lbLo

我遇到了奇怪的现象。如果我做了大量的网络搜索,我就找不到解决方案。 我使用WPF,VS2010引擎。GUI主要由四个列表框组成

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }
第一个列表框是集市分支机构的集合,第二个列表框是集市销售的水果、肉类、蔬菜等商品的集合。 第三个列表框是一种集市商品。(苹果、桃子、苹果、甜瓜……)第四个列表框是一种选定水果的集合,例如,如果选择了苹果、cortland、海棠、sansa、gala等

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }
在启动程序时,所有超市分店都显示在第一个列表框中,如果我选择了一个分店,在超市出售的商品列表将显示在第二个列表框中;nd列表框

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }
以同样的方式,第3个列表框和第4个列表框上显示所选项目的子类

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }
第1个、第2个、第4个列表框不错,但第3个列表框有错误。我认为第二和第三有相同的结构

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }
第三个列表框无法更新selecteditem更改。无论SelectionMode(单个、多个、扩展)如何,第三个列表框的SelectedItems都包含所有项 我选择了。此外,第3'rdlistbox.SelectedItems包含重复项

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }
但是,SelectionChanged事件触发是好的。仅SelectedItems或SelectedItem是问题所在

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }
目前,为了实现此功能,我使用迂回方式。在fire SelectionChanged之后,我捕获SelectionChangedEventArgs的additems。 因此,我使用AddedItems而不是SelectdItem,如SelectionMode=“Single”

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }
我尝试了很多建议,virtualzingstackpanel.isvirtualization=“False”,IsSynchronizedWithCurrentItem=“True”,但我找不到解决方案。 很抱歉,我无法提供所有落后的代码和~xaml。实际上,这个应用程序非常大。所以,我不能那样做

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }
很抱歉,我的英语能力很差

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }
分支机构

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }

货物
项目
分项
//公共可观测集合分支列表{get;private set;}
//public observeCollection GoodList{get;private set;}
//public observeCollection ItemList{get;private set;}
//私有ObservableCollection m_usbitemlist=新ObservableCollection();
//public observeCollection SubItemList{get{return m_usbitemlist;}private set{m_usbitemlist=value;}
私有void BindFabFileList()
{
lbbranchs.ItemsSource=分支列表;
lbLoadedGoods.ItemsSource=GoodList;
lbLoadedItems.itemsource=ItemList;
}
私有void lbLoadedGoods\u SelectionChanged(对象发送者,SelectionChangedEventArgs e)
{
ItemList=新的ObservableCollection();
//从所选商品添加项目列表
}

您正在将对对象ItemList的引用设置为一个新实例,而不是更新WPF已经连接到的列表上的项目。WPF自动连接到ObservaleCollection的CollectionChanged事件,但它不知道您已经更改了代码隐藏中的引用。UI仍然连接到内存中的旧对象

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }
而不是:

            <StackPanel Orientation="Vertical" Grid.Column="0">
                <Label HorizontalAlignment="Center">Goods</Label>
                <ListBox Name="lbLoadedGoods" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedGoods_SelectionChanged"></ListBox>
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="1" >
                <Label HorizontalAlignment="Center">ITEM</Label>
                <!-- ListBox Double Click Event Setter -->
                <ListBox Name="lbLoadedItems" Height="120" Margin="2" SelectionMode="Single" SelectionChanged="lbLoadedItems_SelectionChanged">
                    <ListBox.ItemContainerStyle>
                        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem }}">
                            <EventSetter Event="MouseDoubleClick" Handler="lbLoadedItems_MouseDoubleClick"></EventSetter>
                        </Style>
                    </ListBox.ItemContainerStyle>
                </ListBox>
            </StackPanel>
        </Grid>
    </GroupBox>

    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center">SubItem</Label>
    <ListBox Name="lbSelectedSubItemData" Height="80" Grid.Column="0" Grid.Row="1" Margin="4">
        <!-- ListBox Double Click Event Setter -->
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
                <EventSetter Event="MouseDoubleClick" Handler="lbSelectedSubItemData_MouseDoubleClick"></EventSetter>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>


</StackPanel>





   // public ObservableCollection<string> BranchList { get; private set; }
   // public ObservableCollection<Goods> GoodList { get; private set; }
   // public ObservableCollection<Items> ItemList { get; private set; }
   // private ObservableCollection<string> m_usbitemlist = new ObservableCollection<string>();
   // public ObservableCollection<string> SubItemList { get { return m_usbitemlist; } private set { m_usbitemlist = value; } }


    private void BindFabFileList()
    {
        lbBranches.ItemsSource = BranchList;
        lbLoadedGoods.ItemsSource = GoodList;
        lbLoadedItems.ItemsSource = ItemList;
    }

    private void lbLoadedGoods_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        ItemList = new ObservableCollection<Items>();

        // ItemList Add. From Selected Goods
    }
ItemList = new ObservableCollection<Items>();
ItemList.Add(...);

我想你的问题是你的数据没有得到更新..而且你正在将列表框的itemsSource设置为某个列表..所以你的解决方案可能是..在更改所选项目或所选项目时再次设置itemsSource..并将列表设置为observablecollections..这对你有帮助我认为…对于下面的任何查询更新..如果我是正确理解您的意思这是主详细信息Sceranio阅读了关于IsSynchronizedWithCurrentItem=“True”项我的列表框的源是可观察的集合,如您所见。“项目列表”是可观察的集合。所有的操作都很好。只是“lbLoadedItems.SelectedItems”没有更新。我选择的所有项目都只是在“LBueDeDeTes”中积累,我会考虑更多您的推荐。感谢您的关注。我选择的所有项目都是在“lbLoadedItems”中累积的:我重写了“lbLoadedItems==>lbLoadedItems.SelectedItems”我遇到的问题只是没有更新ListBox的SelectedItems属性。