How do I bind a slate attribute to a function in an instance of another class?

So my UI widget has a SLATE_ATTRIBUTE for my view model, and I cache that in the Construct() function.
Further into Construct() I’m now trying to bind a function from it to the ListItemsSource of a contained widget like so:


I’ve verified that GetSessions returns TArray < ListItemType>* as its return type, so that should be fine, but I get the following error:

'SListView<OptionType>::FArguments::ListItemsSource' : function does not take 2 arguments

I’m presuming that the compiler is having trouble implicitly constructing a TAttribute from my parameters. Is this the case? How should I be binding to functions inside my viewModel?

Good guess, but it’s actually simpler than that:

SLATE_ARGUMENT( const TArray<ItemType>* , ListItemsSource )

It isn’t an ATTRIBUTE. You cannot change it after it is set. Once the ListView is given a TArray pointer to observer, it looks at that pointer until it is destroyed.

You can change the source at any time, but you need to call RequestListRefresh when you do. Same goes for any time you update whatever array you’ve given it. The list view is pretty much a dumb terminal. Anytime you sort/add/remove, you call that function.

Just to clarify. What Josh means is that you can mutate the contents of the array being observed. However, SListView does not provide an API for looking at a different array, which is why the ListItemsSource is an ARGUMENT rather than an ATTRIBUTE.