Я использую комбинированный список для навигации по сохраненным настройкам и заполнения пользовательского интерфейса выбранным выбором.
Это работает при заполнении текстового поля, но у меня возникают проблемы с просмотром списка.
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 на выбор в выпадающем списке с благодарностью.