I'm not sure what I'm doing wrong here ...
I have a custom HashTable that has a method that allows someone to remove the "PartNumber" (value) from the HashTable.
The removal method is as follows:
class COSC202HashTable : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; //.... private List<int> underlyingList; //... public List<int> HashList { get { return underlyingList; } } public void Delete(int partNumber) { string theAlgoritnm = Algorithm; if (String.Compare(theAlgoritnm, "Modulo Division") == 0 && String.Compare(Probe, "Linear Collision Resolution") == 0) { LinearModularDivision(partNumber, false); } if (String.Compare(theAlgoritnm, "Modulo Division") == 0 && String.Compare(Probe, "Key Offset Collision Resolution") == 0) { KeyOffsetModularDivision(partNumber, false); } if (String.Compare(theAlgoritnm, "Pseudorandom") == 0) { Pseudorandom(partNumber, false); } if (String.Compare(theAlgoritnm, "Rotation") == 0) { Rotation(partNumber, false); } NotifyPropertyChanged("HashList"); } //....... private void NotifyPropertyChanged(String info) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(info)); } } }
I bind the base values โโof the HashTable to the user interface; however, the user interface does not update after deleting the value. I made sure that there are no problems with writing, etc.
This is the markup for my WPF interface:
<Window.Resources> <COSC202:COSC202HashTable x:Name="TheHashTable" x:Key="TheHashTable" PropertyChanged="TheHashTable_PropertyChanged"></COSC202:COSC202HashTable> </Window.Resources> <ListView x:Name="HashResults" Height="32" Width="1200" Margin="10" HorizontalAlignment="Right" DataContext="{Binding Source={StaticResource TheHashTable}}" ItemsSource="{Binding Path=HashList}" HorizontalContentAlignment="Left"> <ListView.Background> <LinearGradientBrush StartPoint="0,0" EndPoint="0,2"> <GradientStop Color="#FF000000" Offset="0"></GradientStop> <GradientStop Color="DarkBlue" Offset="1"></GradientStop> </LinearGradientBrush> </ListView.Background> <ListView.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal"></StackPanel> </ItemsPanelTemplate> </ListView.ItemsPanel> <ListView.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" > <TextBlock Text="{Binding Path=.}" FontSize="11" Foreground="Azure" VerticalAlignment="Top" ></TextBlock> <Label Content="|" VerticalAlignment="Top" FontSize="5"></Label> </StackPanel> </DataTemplate> </ListView.ItemTemplate> </ListView>
This is the code I call to remove an item in a HashTable when a button is clicked:
private void DeleteItem_Click(object sender, RoutedEventArgs e) { Object item = HashResults.SelectedItem; COSC202HashTable theHashTable = (COSC202HashTable)this.Resources["TheHashTable"]; if (theHashTable != null && item != null) { theHashTable.Delete((int)item); } HashResults.SelectedIndex = -1; }
What am I doing wrong?
Thanks,
-Frinny
user-interface wpf
Frinavale
source share