The Microsoft documentation for using indexers in XAML PropertyPaths says to use:

```xaml
<Binding Path="[key]" ... />

```

However `key` has to be hard coded to use this type of indexing.

I know the solution for 'flexible' indexing requires `MultiBinding` of the form:

```xaml
<MultiBinding Converter="{StaticResource BasicIndexerConverter}">
    <Binding Path="Indexable"/>
    <Binding Path="Key"/>
</MultiBinding>

```

with

```cs
public class BasicIndexerConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        string[] indexable = (string[])values[0]; //Assuming indexable is type string[]
        int key = (int)values[1];
        return indexable[key];
    }
    public object[] ConvertBack(object values, Type[] targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

```

If you notice my comment, this will only work for binding on `string[]` objects. However custom index operators can be created for classes and I would like to generalize this. I can't hardcode every indexer operator key type and return type right? At least not without `dynamic`.

```cs
public class DynamicIndexerConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        dynamic indexable = (dynamic)values[0];
        dynamic index = (dynamic)values[1];
        return indexable[index];
    }

    public object[] ConvertBack(object values, Type[] targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

```

This is very simple and I imagine not a terrible use for `dynamic` considering bindings are resolved at runtime anyway. But I would like to know if there is a static implementation that isn't too complex or would provide the same functionality with better performance. Is this one of those rare use-cases for dynamic?