WPF,C#静态列表<string>绑定到ListBox

时间:2018-03-02 18:36:29

标签: c# wpf list static listbox

编辑:当我“Show.Dialog”一个新的WPF窗口并在新窗口中使用Xaml时,才会出现此问题。如果我将Xaml复制到我的原始窗口,LIST会正确绑定而不使用静态属性(和更新)!我可以用这个,但这是正常的吗?是否有正确的方法让新的Windows正常工作?

WorkOrderWindow WorkOrderWindow = new WorkOrderWindow();
WorkOrderWindow.ShowDialog();

我将ListBox绑定到List。当我创建List静态并注释掉“NotifyPropertyChanged”时,它可以正常工作,但我需要NotifyPropertyChanged并且无法在静态上实现NotifyPropertyChanged。如果我将我的列表更改为非静态,我的ListBox中没有任何项目。

从“静态”更改并注释掉“NotifyPropertyChanged”是填充项目的ListBox之间的区别。

我不知道为什么会这样。任何人都可以向我解释并提供解决方案吗?感谢。

这可以按预期工作,(减去更新UI的能力):

    private static List<string> _WorkOrderGroupsList;
    public static List<string> WorkOrderGroupsList
    {
        get { return _WorkOrderGroupsList; }
        set
        {
            _WorkOrderGroupsList = value;
            //NotifyPropertyChanged("WorkOrderGroupsList");
        }
    }

这不起作用:

    private List<string> _WorkOrderGroupsList;
    public List<string> WorkOrderGroupsList
    {
        get { return _WorkOrderGroupsList; }
        set
        {
            _WorkOrderGroupsList = value;
            NotifyPropertyChanged("WorkOrderGroupsList");
        }
    }

WPF:

    <ListBox x:Name="myListBox" Grid.Row="2" Grid.Column="0" ItemsSource="{Binding WorkOrderGroupsList, UpdateSourceTrigger=PropertyChanged}">
         <i:Interaction.Triggers>
              <i:EventTrigger EventName="SelectionChanged">
                  <i:InvokeCommandAction Command="{Binding SelectedItemChangedCommand}"  
                                         CommandParameter="{Binding ElementName=myListBox, Path=SelectedItem}"/>
              </i:EventTrigger>
         </i:Interaction.Triggers>
     </ListBox >

0 个答案:

没有答案