Hmmm, it seems odd but after some further experimentation I found that instead of changing the string directly, creating a copy of the object, changing the string and making the object at the concerned index equal to the copy works.
Such as:
Dim changing As ListType = MyList(DataRepeater1.CurrentItemIndex)
changing.MyString = "Clicked"
MyList(DataRepeater1.CurrentItemIndex) = changing
Or a shorter version:
MyList(DataRepeater1.CurrentItemIndex).MyString = "Clicked"
MyList(DataRepeater1.CurrentItemIndex) = MyList(DataRepeater1.CurrentItemIndex)
Seems like the BindingList somehow only notifies the DataRepeter when the entire object changes rather than a member of an object...