将列表属性绑定到TextBlock

时间:2014-07-08 08:26:02

标签: wpf xaml mvvm data-binding

我有一个名为MyClass的类,如下所示:

public class MyClass : BaseObject, IDisposable
{
    public int MyClassId { get; set; }

    public IList<MyClassTranslation> MyTranslations { get; set; }
}

MyClassTranslation看起来像这样:

public class MyClassTranslation
{
    public string MyClassName { get; set; }
}

我有一个视图和一个视图模型。 View模型如下所示:

class MyClassViewModel : ViewModelBase, IMyClassViewModel
{
    public MyClassViewModel()
    {
        myObjects = GetMyObjects();
    }

    public IList<MyClass> myObjects { get; set; }
}

以下是观点:

<ItemsControl ItemsSource="{Binding myObjects}" >
    <ItemsControl.ItemTemplate>
        <DataTemplate>
                <StackPanel HorizontalAlignment="Center">                            
                    <TextBlock FontSize="24pt" FontWeight="Bold" TextAlignment="Center" Text="{Binding MyClassTranslation.MyClassName[0]}"></TextBlock>
                </StackPanel>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

问题是myClassName属性没有显示出来。我如何绑定它?

1 个答案:

答案 0 :(得分:0)

假设数据上下文设置正确,那么正确的绑定将是

<StackPanel HorizontalAlignment="Center">                            
    <TextBlock FontSize="24pt" 
               FontWeight="Bold" 
               TextAlignment="Center" 
               Text="{Binding MyTranslations[0].MyClassName}">
    </TextBlock>
</StackPanel>

您可以使用索引器绑定此类值