Изменение цвета в Listbox на WP7 - PullRequest
1 голос
/ 07 августа 2011

Я начинаю с WP7 и пытаюсь изменить цвет и другие свойства TexBlock.Он включен в список и привязан к коллекции.Я ищу способ, как «OnDataBound».Значение должно меняться в зависимости от объекта привязки.

<ListBox HorizontalAlignment="Left"  Name="listBox1"  ItemsSource="{Binding}"  >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Border BorderBrush="{StaticResource PhoneForegroundBrush}" Width="418" BorderThickness="1" Margin="2">
                            <StackPanel Orientation="Vertical" >
                                <StackPanel Orientation="Horizontal"><TextBlock Text="Charater: "/><TextBlock Text="{Binding Path=CharacterName}" TextWrapping="Wrap" /></StackPanel>
                                <StackPanel Orientation="Horizontal"><TextBlock Text="Perk launched: "/><TextBlock Text="{Binding Path=CreationDate}" TextWrapping="Wrap"/></StackPanel>
                                <StackPanel Orientation="Horizontal"><TextBlock Text="Finished at: "/><TextBlock Text="{Binding Path=FinishedAt}" TextWrapping="Wrap"/></StackPanel>
                                <StackPanel Orientation="Horizontal"><TextBlock x:Name="TextBlockStatus" Text="Status: "/><TextBlock Text="{Binding Path=Status}" TextWrapping="Wrap"/></StackPanel>
                            </StackPanel>
                        </Border>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

Зависит от состояния объекта привязки, мне нужно поменять свойство Textblock (цвет и т. Д.). Не могли бы вы сказать мне точку изложения?

Мое обязательство заключается в следующем (в .cs):

 this.listBox1.DataContext = this.calculatedValues;

спасибо за вашу помощь

1 Ответ

1 голос
/ 08 августа 2011

В этом примере цвет, если он хранится в классе с именем ListItems, который определен как:

public class ListItems
{
    public string name { get; set; }
    public string color { get; set; }
}

Наблюдаемая совокупность типа ListItems добавляется в код позади файла MainPage:

public partial class MainPage : PhoneApplicationPage
{

    ObservableCollection<ListItems> items = new ObservableCollection<ListItems>();
    // Constructor
    public MainPage()
    {
        InitializeComponent();

        items.Add(new ListItems() { name = "Item 1", color = "Red" });
        items.Add(new ListItems() { name = "Item 2", color = "Blue" });
        items.Add(new ListItems() { name = "Item 3", color = "Green" });
        items.Add(new ListItems() { name = "Item 4", color = "White" });
        items.Add(new ListItems() { name = "Item 5", color = "Purple" });

        DataContext = this;
        listBox1.ItemsSource = items;
    }
}

}

И элементы типа ListItem добавляются в наблюдаемую коллекцию.

В этом случае файл MainPage.xaml будет содержать поле со списком, привязанный к которому ItemTemplate будет привязан ксвойства класса ListItem:

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <ListBox HorizontalAlignment="Left" Margin="12" Width="400" Height="400" Name="listBox1" VerticalAlignment="Top" >
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock x:Name="Item" Text="{Binding name}" FontFamily="Arial" FontSize="40" Foreground="{Binding color}" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>

Готовая страница выглядит следующим образом:

enter image description here

Надеюсь, это поможет.

...