绑定到视图模型中的变量

时间:2014-07-11 08:37:06

标签: wpf mvvm data-binding

这是我的XAML代码:

<ItemsControl  MinHeight="400" BorderThickness="0" ItemsSource="{Binding People}" ItemTemplateSelector="{StaticResource myItemsTemplateSelector}" />

在资源中:

<UserControl.Resources>

    <DataTemplate x:Key="ItemTemplate">
            <Button CommandParameter="{Binding}" Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}, Path=DataContext.SelectSomething}" >
                <StackPanel>
                        <TextBlock Text="{Binding Cars[0].Name}"></TextBlock>
                        <TextBlock Text="{Binding Cars[0].Description}"></TextBlock>
                </StackPanel>
            </Button>
    </DataTemplate>

    <selectors:MySelector ItemTemplate="{StaticResource ItemTemplate}" x:Key="myItemsTemplateSelector" />

</UserControl.Resources>

People是我视图模型中的ObservableCollection。 Person是具有此属性的类:

public IList<Cars> Cars { get; set; }

如您所见,我将文本块绑定到Cars [0] .Name和Cars [0] .Description。我遇到的问题是0.而不是0,它需要是一个在我的视图模型中定义的变量。我怎样才能使绑定成为这样的东西:

<TextBlock Text="{Binding Cars[variableInVM].Name}"></TextBlock>

2 个答案:

答案 0 :(得分:1)

我通过创建一个具有以下属性的新类来修复此问题:Person,Cars和CurrentCars。然后,我没有使用Cars [index]绑定,而是使用CurrentCars绑定。

答案 1 :(得分:0)

您可以使用IMultiBindingConverter,然后使用绑定MultiBindingCars的{​​{1}}并使用您的转换器。

转换器只返回variableInVM的{​​{1}}元素。

在该元素中,您的问题中会显示variableInVM,并且会使用传入的汽车。