2013-03-27 4 views
1

Я хочу сделать пару элементов с помощью ItemsControl, и выделить одну из нихВыделите элемент в ItemsControl

Мой ViewModel:

Мой XAML:

<ItemsControl ItemsSource="{Binding Items}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <myUserControl Background="{?}" /> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

Я хочу чтобы выделить элемент, установив свойство фона на что-то конкретное, как я должен продолжать об этом?

ответ

1

Во-первых есть конвертер, который будет сравнивать ссылки двух объектов говорят ObjectEqualsConverter

public class ObjectEqualsConverter : IMultiValueConverter 
{ 
    #region IMultiValueConverter   

    public object Convert(object[] values, Type targetType, object parameter, 
          CultureInfo culture) 
    { 
     return values[0] == values[1]; 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, 
           CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
    #endregion 
} 

И в XAML файл, используйте преобразователь, чтобы проверить, если current item is same as highlighted item in ViewModel и в случае, если преобразователь возвращает истинный схватываться color управления с помощью trigger -

<ItemsControl ItemsSource="{Binding Items}"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <myUserControl x:Name="myControl" /> 
       <DataTemplate.Triggers> 
        <DataTrigger Value="True"> 
         <DataTrigger.Binding> 
          <MultiBinding Converter="{StaticResource ObjectEqualsConverter}"> 
           <Binding/> 
           <Binding Path="DataContext.HighlightedItem" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ItemsControl}"/> 
          </MultiBinding> 
         </DataTrigger.Binding> 
         <Setter TargetName="myControl" Property="Background" Value="Red"/> 
        </DataTrigger> 
       </DataTemplate.Triggers> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

Убедитесь, что вы добавили конвертер в качестве resource в свой файл xaml.

+1

Работает для меня! Благодарю. Заслуживает Принять. – Guge

Смежные вопросы