C# MVVM绑定到数组索引
我正在使用MVVM,并且我正在尝试绑定一个数组索引。XAML控件的数据上下文绑定到视图模型。在实例化控件时,我将数组索引发送到构造函数中,然后将该索引分配给窗口资源,以便XAML可以直接使用它。该值按预期传递给构造函数,我可以在XAML页面的其他区域中使用它,但由于某些原因,它不能作为数组索引使用。有人知道这里发生了什么吗 c#: 以下是xaml:C# MVVM绑定到数组索引,c#,wpf,xaml,mvvm,binding,C#,Wpf,Xaml,Mvvm,Binding,我正在使用MVVM,并且我正在尝试绑定一个数组索引。XAML控件的数据上下文绑定到视图模型。在实例化控件时,我将数组索引发送到构造函数中,然后将该索引分配给窗口资源,以便XAML可以直接使用它。该值按预期传递给构造函数,我可以在XAML页面的其他区域中使用它,但由于某些原因,它不能作为数组索引使用。有人知道这里发生了什么吗 c#: 以下是xaml: <Label Grid.Column="0" Content="{DynamicResource myResourceKey}"/>
<Label Grid.Column="0" Content="{DynamicResource myResourceKey}"/>
定义资源:
<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}"/>
恐怕这不是受支持的语法-
绑定
确实支持嵌套表达式,但我认为它们必须是属性的整个“值”(如Source={StaticResource something}
等)。在这种情况下,需要在绑定的Path
属性中使用嵌套表达式,我认为这是行不通的
为什么需要绑定数组索引,而不能创建一个单独的属性,只从viewmodel返回MyObservableCollection[index]
项
public Item => MyObservableCollection[MyIndex];
在XAML中:
<GradientStop Color="{Binding Item.ColorsBo.PageBackgroundPrimary}" Offset="1"/>
恐怕这不是受支持的语法-
绑定
确实支持嵌套表达式,但我认为它们必须是属性的整个“值”(如Source={StaticResource something}
等)。在这种情况下,需要在绑定的Path
属性中使用嵌套表达式,我认为这是行不通的
为什么需要绑定数组索引,而不能创建一个单独的属性,只从viewmodel返回MyObservableCollection[index]
项
public Item => MyObservableCollection[MyIndex];
在XAML中:
<GradientStop Color="{Binding Item.ColorsBo.PageBackgroundPrimary}" Offset="1"/>
以下XAML无效:
MyObservableCollection[DynamicResource myResourceKey]
dynamicResourceMyResourceKey
必须替换为常量,例如1
或'abc'
另一个选项是按照@Martin Zikmund的建议在视图模型中执行查找,或者使用绑定到myResourceKey
和MyObservableCollection
的多重绑定以及多重转换器:
以下XAML无效:
MyObservableCollection[DynamicResource myResourceKey]
dynamicResourceMyResourceKey
必须替换为常量,例如1
或'abc'
另一个选项是按照@Martin Zikmund的建议在视图模型中执行查找,或者使用绑定到myResourceKey
和MyObservableCollection
的多重绑定以及多重转换器:
xaml无法读取索引,这真是太糟糕了,但这是一个很好的信息。我可以重新编写代码,为每个控件提供所需的数据模型切片。非常感谢Martin。在我看来,这是最好的方法:-)xaml不能读取索引真的很糟糕,但知道它是很好的信息。我可以重新编写代码,为每个控件提供所需的数据模型切片。非常感谢马丁。在我看来,这是最好的方法:-)