You would not bind or edit a dictionary directly. You should instead create a list of key and value pairs to bind to, something like:
public class MyKeyValue : INotifyPropertyChanged{
public string Key {get;set;}
public string Value {get;set;}
// Implement INotifyPropertyChanged with proper setters etc.
}
public ObservableCollection<MyKeyValue> MyList = new ();
public Dictionary<string,string> GetDictionary() => MyList.ToDictionary(i => i.Key, i => i.Value);
Bind this to a datagrid, or a listView or whatever control you prefer.
I would probably recommend making the Key readonly, and have a dedicated field for adding key/values. That way you have a place to check for duplicated keys and show an appropriate warning.