Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVVM绑定到数组索引_C#_Wpf_Xaml_Mvvm_Binding - Fatal编程技术网

C# MVVM绑定到数组索引

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}"/>

我正在使用MVVM,并且我正在尝试绑定一个数组索引。XAML控件的数据上下文绑定到视图模型。在实例化控件时,我将数组索引发送到构造函数中,然后将该索引分配给窗口资源,以便XAML可以直接使用它。该值按预期传递给构造函数,我可以在XAML页面的其他区域中使用它,但由于某些原因,它不能作为数组索引使用。有人知道这里发生了什么吗

c#:

以下是xaml:

<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不能读取索引真的很糟糕,但知道它是很好的信息。我可以重新编写代码,为每个控件提供所需的数据模型切片。非常感谢马丁。在我看来,这是最好的方法:-)