WPF Изменить содержимое ListView на основе выбора ComboBox - PullRequest
0 голосов
/ 02 марта 2020

Я использую комбинированный список для навигации по сохраненным настройкам и заполнения пользовательского интерфейса выбранным выбором.

Это работает при заполнении текстового поля, но у меня возникают проблемы с просмотром списка.

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>

MainWindow.xaml.cs

public MainWindow()
    {           
        MyViewModel = new MainWindowVM();
        DataContext = MyViewModel;      
        InitializeComponent();  
    }

    void SaveBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (SaveComboBox.SelectedItem != null)
        {               
            MyViewModel.SelectedSave = SaveComboBox.SelectedItem as SaveData;
            // This works.
            WorkingTextBox.Text = MyViewModel.SelectedSave.ProjLoc;
            // This does not work.
            UIDrawingList.ItemsSource = MyViewModel.SelectedSave.ItemstoPublish;
        }
    }

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();
    }

Любые советы о том, как правильно обновить на основе ListView на выбор в выпадающем списке с благодарностью.

...