绑定LongListSelector模板内的背景属性

时间:2013-11-02 02:41:31

标签: c# xaml binding datatemplate longlistselector

我有Class MyClass:

public class MyClass
{

    public string MyColor { get; set; }

    public class TeamOfCreators : ObservableCollection<Creator>
    {
        public string CategoryName { get; set; }

    }
    public ObservableCollection<TeamOfCreators> TeamsOfCreators { get; set; }

}

和Xaml:

<toolkit:LongListSelector ItemsSource="{Binding MyClass.TeamsOfCreators}" Height="530">
                    <toolkit:LongListSelector.GroupItemTemplate>
                        <DataTemplate>
                            <Border Background="{Binding MyColor, Converter={StaticResource NativeColorConverter}}" />      
                            <TextBlock Text="{Binding CategoryName}" Style="{StaticResource PhoneTextGroupHeaderStyle}"/>
                            </Border>
                        </DataTemplate>
                    </toolkit:LongListSelector.GroupItemTemplate>
</toolkit:LongListSelector>

如何绑定背景,到达那里MyColor?应该如何在xaml中查看背景中的绑定?

1 个答案:

答案 0 :(得分:1)

在DataTemplate中,DataContext是一个对象,例如对于TeamCreatorTeamCreator没有名为MyColor的属性 - 每个TeamCreator都有自己的颜色,或者所有对象只有一种颜色?

如果每个TeamCreator都有自己的颜色,请将MyColor属性移到TeamCreator类。

如果要控制TeamCreator中所有MyClass个对象的背景属性,则必须访问DataTemplate之外的DataContext。

例如,如果您已将DataContext设置为,例如,您的Window,

<Window x:Name="MyWindow">

<toolkit:LongListSelector ItemsSource="{Binding TeamsOfCreators}">
    <toolkit:LongListSelector.GroupItemTemplate>
        <DataTemplate>
            <Border Background="{Binding DataContext.MyColor, 
                                         ElementName=MyWindow, 
                                         Converter={StaticResource NativeColorConverter}}"/>      
                <!-- ... -->
            </Border>
        </DataTemplate>
    </toolkit:LongListSelector.GroupItemTemplate>
</toolkit:LongListSelector>