У меня есть словарь, который я заполняю, перебирая другой словарь. В какой-то момент команда нажатия кнопки обновляет значение одного из ключей. Проблема в том, что он никогда не обновляет интерфейс с обновленным значением. Но когда я сохраняю точку останова, я вижу ценность обновлений словаря. Пожалуйста, помогите.
public abstract class BindableBase : INotifyPropertyChanged
{
protected bool Set<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
{
if (Equals(storage, value))
{
return false;
}
storage = value;
RaisePropertyChanged(propertyName);
return true;
}
protected virtual void RaisePropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
ViewModel:
public class VM
{
public ICommand HomingSectionAcceptButtonCommand { get; set; }
private Dictionary<EnumLocalizer<HomingLocationEnums>,string> _homingItems;
public Dictionary<EnumLocalizer<HomingLocationEnums>, string> HomingItems
{
get => _homingItems;
set
{
Set(ref _homingItems, value);
}
}
public VM()
{
foreach (var item in _readOrWriteHomingDataHelper.HomingConfiguration)
{
HomingItems.Add(new EnumLocalizer<HomingLocationEnums>() { Value = (HomingLocationEnums)Enum.Parse(typeof(HomingLocationEnums), item.Key) }, item.Value);
}
HomingSectionAcceptButtonCommand = new RelayCommand<EnumLocalizer<HomingLocationEnums> >(UpdateOffsetsFromDataBase);
}
private async void UpdateOffsetsFromDataBase(EnumLocalizer<HomingLocationEnums> homingLocation)
{
if (HomingItems.ContainsKey(homingLocation))
{
//UI doesn't update the value with ABC
HomingItems[homingLocation] = "ABC";
}
}
}
Вот мое перечисление (что не важно)
public enum HomingLocationEnums
{
BarCodeScanning = 0,
Aspiration,
Framing,
LABHomeOrFrame,
LeftScan,
RightScan,
LeftAspiration,
RightAspiration,
LeftFraming,
RightFraming
}
Xaml:
<DataTemplate x:Key="HomingTemplate">
<ListView Grid.Row="1" Grid.Column="1"
x:Name="lstHomingItemsTemplate"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ItemsSource="{Binding HomingItems}" Margin="0,20"
SelectionMode="None">
<ListView.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="180"/>
<ColumnDefinition Width="180"/>
<ColumnDefinition Width="180"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Key}" FontSize="{StaticResource FontSizeMedium}" TextWrapping="Wrap"/>
<TextBlock Grid.Column="1" Text="{Binding Value}" FontSize="{StaticResource FontSizeMedium}" TextWrapping="Wrap"/>
<Button Grid.Column="2" Margin="20,0,0,0"
Command="{Binding Path=DataContext.HomingSectionAcceptButtonCommand,ElementName=lstHomingItemsTemplate}"
CommandParameter="{Binding Key}">
<Button.Content>
<SymbolIcon Symbol="Accept"
HorizontalAlignment="Center"
VerticalAlignment="Stretch"/>
</Button.Content>
</Button>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>