Я использую MVVM и пытаюсь привязать индекс массива. Контекст данных элемента управления XAML связан с моделью представления. Когда я создаю экземпляр элемента управления, я отправляю индекс массива в конструктор, а затем назначаю этот индекс ресурсу окна, чтобы XAML мог использовать его напрямую. Значение поступает в конструктор, как и ожидалось, и я могу использовать его в других областях страницы XAML, но по какой-то причине оно не будет работать как индекс массива. Кто-нибудь знает, что здесь происходит?
C #:
public partial class MyControl : UserControl {
public MyControl(int index) {
MyIndex = index;
InitializeComponent();
}
private int myIndex;
public int MyIndex {
get { return myIndex; }
set { myIndex = value; }
}
private void Mygrid_OnLoaded(object sender, System.Windows.RoutedEventArgs e) {
Resources["myResourceKey"] = MyIndex;
}
}
Вот xaml:
Определите ресурс:
<UserControl.Resources>
<sys:Int32 x:Key="myResourceKey"></sys:Int32>
</UserControl.Resources>
Это не работает. Я получаю сообщение об ошибке привязки, потому что он не распознает индекс
<GradientStop Color="{Binding MyObservableCollection[DynamicResource myResourceKey].ColorsBo.PageBackgroundPrimary}" Offset="1"/>
Это работает, поэтому значение ресурса передается в xaml:
<Label Grid.Column="0" Content="{DynamicResource myResourceKey}"/>