如何访问绑定列表框中的项目,wp7

时间:2010-11-24 13:01:06

标签: c# xaml windows-phone-7

我有WP7的XAML:

<ListBox x:Name="lbMain" DataContext="{Binding}" ItemsSource="{Binding Items}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock x:Name="txtName" Text="{Binding name}" />
                    <ListBox x:Name="lbCars" DataContext="{Binding}" ItemsSource="{Binding cars}" ScrollViewer.VerticalScrollBarVisibility="Disabled">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel x:Name="spnlCars">
                                    <TextBlock x:Name="txtCarName" Text="{Binding name}" />
                                    <ListBox x:Name="lbCarColor" DataContext="{Binding}" ItemsSource="{Binding color}">
                                        <ListBox.ItemTemplate>
                                            <DataTemplate>
                                                <TextBlock x:Name="txtColor" Text="{Binding colorValue}"/>
                                                <Image Name="imgColor"/>
                                            </DataTemplate>
                                        </ListBox.ItemTemplate>
                                    </ListBox>
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

我的DataContex设置为我创建的ViewModel,它从webservice获取数据。数据结构是:

  • 机器(有:车辆[])
  • -Vehicles(has:name,Cars [],Trucks [],...)----这就是我对lbMain的约束
  • - 汽车(有:名称,颜色[],...)----例如,color [0] =“red”
  • --- colorValue

我还有想放在imgColor中的图片资源。

我不知道热:

  1. 根据txtColor设置每个imgColor以从资源中获取不同的图像,
  2. 如果(例如)txtColor.Text =“red”,则将粗体字体应用于txtCarName。
  3. 我感谢任何建议和任何建议。

1 个答案:

答案 0 :(得分:2)

创建Converter以将颜色名称转换为BitmapImage

示例:

class ColorToImageConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        String colorName = (String)value;

        switch (colorName.ToLower())
        {
            case "red":
                return new BitmapImage(new Uri("..."));
            default:
                return new BitmapImage(new Uri("..."));
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}