WPF基于组合框选择更改ListView内容
我使用组合框在保存的设置中导航,并用所选选项填充UI 这在填充文本框时有效,但我在使用listview时遇到问题 MainWindow.xamlWPF基于组合框选择更改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
<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();
}