这是我的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>
答案 0 :(得分:1)
我通过创建一个具有以下属性的新类来修复此问题:Person,Cars和CurrentCars。然后,我没有使用Cars [index]绑定,而是使用CurrentCars绑定。
答案 1 :(得分:0)
您可以使用IMultiBindingConverter
,然后使用绑定MultiBinding
和Cars
的{{1}}并使用您的转换器。
转换器只返回variableInVM
的{{1}}元素。
在该元素中,您的问题中会显示variableInVM
,并且会使用传入的汽车。