WPF基于组合框选择更改ListView内容

WPF基于组合框选择更改ListView内容,wpf,data-binding,Wpf,Data Binding,我使用组合框在保存的设置中导航,并用所选选项填充UI 这在填充文本框时有效,但我在使用listview时遇到问题 MainWindow.xaml <ComboBox x:Name="SaveComboBox" ItemsSource="{Binding Saves, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="SaveName" SelectedItem="{Binding SelectedSa

我使用组合框在保存的设置中导航,并用所选选项填充UI

这在填充文本框时有效,但我在使用listview时遇到问题

MainWindow.xaml

<ComboBox x:Name="SaveComboBox" ItemsSource="{Binding Saves, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="SaveName" SelectedItem="{Binding SelectedSave}" IsEditable="True" />

<TextBox x:Name="WorkingTextBox" Text="{Binding ProjLoc, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="False"/>

<ListView x:Name="UIDrawingList" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" ItemsSource="{Binding ItemstoPublish}" Background="#888888" >
               <ListView.View>
                <GridView>
                        <GridViewColumn Width="110" Header="MARK" DisplayMemberBinding="{Binding TeklaDrawing.Mark}"/>
                        <GridViewColumn Width="110" Header="NAME" DisplayMemberBinding="{Binding TeklaDrawing.Name}"/>
                        <GridViewColumn Width="110" Header="TITLE 1" DisplayMemberBinding="{Binding TeklaDrawing.Title1}"/>
                </GridView>
            </ListView.View> 
        </ListView>
MainWindowVM.cs

private ObservableCollection<SaveData> saves = new ObservableCollection<SaveData>();
    public ObservableCollection<SaveData> Saves
    {
        get { return saves; }
        set { saves = value; OnPropertyRaised("Saves"); }
    }

    private SaveData selectedSave = new SaveData();
    public SaveData SelectedSave
    {
        get { return selectedSave; }
        set { selectedSave = value; OnPropertyRaised("SelectedSave"); }
    }

public ObservableCollection<ItemtoPublish> ItemstoPublish
    {
        get { return itemsTopublish; }
        set { itemsTopublish = value; OnPropertyRaised("ItemstoPublish"); }
    }

public void Save(string SaveName)
    {
        SaveData mySave = new SaveData();

        mySave.SaveName = SaveName;
        mySave.ItemstoPublish = ItemstoPublish;
        mySave.ProjLoc = ProjLoc;
        Saves.Add(mySave);

        // Searilize the list of Saves.
        IFormatter formatter = new BinaryFormatter();  
        Stream stream = new FileStream(SaveLocation+@"\"+SaveFileName+".jd2", FileMode.Create, FileAccess.Write, FileShare.None);  
        formatter.Serialize(stream, Saves);
        stream.Close();
    }
private ObservableCollection saves=新建ObservableCollection();
公共可观测集合保存
{
获取{返回保存;}
设置{saves=value;OnPropertyRaised(“saves”);}
}
private SaveData selectedSave=new SaveData();
公共存储数据选择保存
{
获取{return selectedSave;}
设置{selectedSave=value;OnPropertyRaised(“selectedSave”);}
}
公共可观察收集项停止发布
{
获取{return itemsTopublish;}
设置{itemstopulish=value;OnPropertyRaised(“itemstopulish”);}
}
公共作废保存(字符串保存名称)
{
SaveData mySave=new SaveData();
mySave.SaveName=SaveName;
mySave.ItemstoPublish=ItemstoPublish;
mySave.ProjLoc=ProjLoc;
保存。添加(mySave);
//搜索保存列表。
IFormatter formatter=新的BinaryFormatter();
Stream Stream=新文件流(SaveLocation+@“\”+SaveFileName+.jd2”,FileMode.Create,FileAccess.Write,FileShare.None);
序列化(流,保存);
stream.Close();
}

非常感谢您就如何根据组合框选择正确更新ListView提供的任何建议。

我没有发现任何明显的错误。通过在XAML中使用绑定表达式和在代码隐藏中设置属性,您可以将世界混为一谈。您应该注意,代码隐藏中的属性集覆盖了XAML绑定表达式。但这不应该引起你注意到的问题。您是否确认
ItemstoPublish
确实包含您期望的内容?是的。我可以将项目添加到ItemstoPublish,列表视图将显示它们。当我通过组合框选择不同的保存索引时,就会出现问题。我希望listview填充属于新选择集的ItemStopPublish数据,但这不会发生。
private ObservableCollection<SaveData> saves = new ObservableCollection<SaveData>();
    public ObservableCollection<SaveData> Saves
    {
        get { return saves; }
        set { saves = value; OnPropertyRaised("Saves"); }
    }

    private SaveData selectedSave = new SaveData();
    public SaveData SelectedSave
    {
        get { return selectedSave; }
        set { selectedSave = value; OnPropertyRaised("SelectedSave"); }
    }

public ObservableCollection<ItemtoPublish> ItemstoPublish
    {
        get { return itemsTopublish; }
        set { itemsTopublish = value; OnPropertyRaised("ItemstoPublish"); }
    }

public void Save(string SaveName)
    {
        SaveData mySave = new SaveData();

        mySave.SaveName = SaveName;
        mySave.ItemstoPublish = ItemstoPublish;
        mySave.ProjLoc = ProjLoc;
        Saves.Add(mySave);

        // Searilize the list of Saves.
        IFormatter formatter = new BinaryFormatter();  
        Stream stream = new FileStream(SaveLocation+@"\"+SaveFileName+".jd2", FileMode.Create, FileAccess.Write, FileShare.None);  
        formatter.Serialize(stream, Saves);
        stream.Close();
    }