1
나는 아이템 컬렉션을 제공하는 ViewModel을 가지고 있습니다. ActiveItem 속성도 있습니다. Items 컬렉션은 ActiveItem을 포함 할 수도 있고 포함하지 않을 수도 있습니다.WPF 하이라이트 아이템
내가 원하는 (XAML에서) 항목을 목록으로 표시하고 활성 항목과 동일한 항목을 강조 표시합니다. 당신이 볼 수 있듯이
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<Border x:Name="outerBorder" Background="Green">
<TextBlock Text="{Binding ItemId}" />
</Border>
<DataTemplate.Triggers>
<DataTrigger
Binding="{Binding
Path=DataContext.Item.ItemId,
RelativeSource={RelativeSource TemplatedParent},
Mode=Default}"
Value="{Binding
Path=DataContext.ActiveItem.ItemId,
RelativeSource={RelativeSource AncestorType=Window},
Mode=Default}"
>
<Setter TargetName="outerBorder"
Property="Background" Value="Orange" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
내가 ActiveItem와 현재 항목과 일치하는 DataTrigger를 사용하려고 시도했지만 작동하지 않습니다
는 나는 아무 성공 다음 노력했다. 이것이 DataTrigger.Value의 Binding을 사용하려고 시도한 것과 관련이 있다고 생각합니다. 다른 예제는 보지 못했습니다.
어떻게하면 좋을지 아이디어가 있습니까?
감사합니다,
다니엘
그래서 Items (모델 객체)를 직접 노출하는 대신 ItemViewModel을 만들어 노출해야합니다. 나는 IsActive 속성을 내 Item 모델 객체에 직접 추가하는 것을 꺼린다. – djskinner