Как связать Listbox с двумя свойствами? - PullRequest
0 голосов
/ 17 июня 2010

В Silverlight у меня есть Grid с DataContext, установленным в класс ViewModel.
ViewModel содержит список элементов (каждый из которых содержит int ID и строку Text) и целое число «ID», которое идентифицирует текущий активный элемент (не выбранный элемент).
Я хотел бы построить xaml с ListBox, где активированный элемент имеет другой цвет. Как я могу это сделать?

В частности, в xaml у меня есть:

<Grid DataContext="ModelView">
    <ListBox ItemsSource="Questions">
        <ListBox.ItemTemplate>           
            <TextBlock Text="{Binding ID}" />
            <TextBlock Text="{Binding Text}" />           
        </ListBox.ItemTemplate>
    </ListBox>
    <TextBlock Text="{Binding ID}" />
</Grid>`

Как установить цвет одного ( и только одного ) элемента в списке на основе идентификатора свойства в ModelView?

Еще одна проблема - когда я меняю активный элемент - как я могу обновить ListBox?

Ответы [ 2 ]

0 голосов
/ 18 июня 2010

Ваш ItemTemplate, похоже, недействителен между прочим. !

Я бы попытался использовать триггеры для шаблона выделенного элемента списка

В сетке я сделал это, например

 <DataTemplate>
     <Image x:Name="MyImage" Source="Images/corrected.png" Width="64" Height="64" />
     <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding YourConditionValue}" Value="0">
            <Setter TargetName="MyImage" Property="Source" Value="Images/notCorrected.png" />
         </DataTrigger>
      </DataTemplate.Triggers>
  </DataTemplate>

Это может быть решение, но вы должны проверить это сами

0 голосов
/ 17 июня 2010

Я в xaml: <Grid DataContext="ModelView"> <ListBox ItemsSource="Questions"> <ListBox.ItemTemplate><br> <TextBlock Text="{Binding ID}" /> <TextBlock Text="{Binding Text}" /><br> </ListBox.ItemTemplate> </ListBox> <TextBlock Text="{Binding ID}" /> </Grid>

Как установить цвет одного (и только одного) элемента в списке на основе идентификатора свойства в ModelView?

...