Do wszystkich sąsiadów ... nie traćcie nadziei! można to zrobić!
Zacząłem od VSS, klikając prawym przyciskiem myszy na liście i używając każdego "Edytuj szablon" i "Edytuj dodatkowe szablony" dla każdej dostępnej rzeczy, aż znalazłem, jak działają te rzeczy.
Zaczynasz po prostu od skrzynki z listą, przywiązanej do MVVM jak zwykle.
<ListBox Width="100"
x:Name="myComboBox" Margin="8"
ItemsSource="{Binding ListBoxListSource}"
SelectedIndex="{Binding ListBox}">
</ListBox>
W UserControl lub okno Resources skonfigurować kilka rzeczy ....
ListBoxStyle - tym style główny pojemnik z pola listy, można ustawić granice, marginesy, dopełnienie etc główne pole tutaj. Na mój przykład po prostu pozbywam się wszystkiego, żeby to zmienić.
<UserControl.Resources>
<Style x:Key="ListBoxStyle" TargetType="{x:Type ListBox}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0"/>
</Style>
</UserControl.Resources>
ItemContainerStyle - To jest trochę, że ludzie mówią, nie może być ponownie stylizowany - zawiera pasek „windows-selektora-blue”, gdy element jest zaznaczony, ale nie bój się to też może być zmienić styl (połączyć sekcję UserControl.Resources w połączeniu z powyższym).
Ta sekcja jest> zmiana szablonu elementu ItemContainer z dowolnego elementu na obramowanie, ustawienie górnego marginesu 3 w celu uzupełnienia i ustawienia stylu. Wszystko, co robimy w tym stylu, dodaje przezroczyste obramowanie 3 pikseli po lewej i prawej stronie elementu. Następnie w wyzwalaczach> IsSelected (target of myBorder), zmieniając obramowanie Brush to Red.
<UserControl.Resources>
<Style x:Key="ItemContainerStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border x:Name="myBorder"
Padding="0" Margin="0 3 0 0"
SnapsToDevicePixels="true"
Style="{DynamicResource borderContent}">
<ContentPresenter />
</Border>
<ControlTemplate.Resources>
<Style x:Key="borderContent" TargetType="Border">
<Setter Property="BorderThickness" Value="3 0 3 0"/>
<Setter Property="BorderBrush" Value="Transparent"/>
</Style>
</ControlTemplate.Resources>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="myBorder" Property="BorderBrush" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
ListBoxItemDataTemplate - Następnym krokiem jest, aby pojemnik na artykuł, który wyświetla dane. W moim przykładzie YourTextBlockStyler ma wyzwalacz wiązania Text> i zmienia kolory pierwszego planu i tła tekstu. Zwróć uwagę, że pierwszy plan i tło stylu Listbox są ustawione jako przezroczyste, więc musisz je przejechać w stylu TextBlock, jeśli chcesz coś zobaczyć.
<UserControl.Resources>
<DataTemplate x:Key="ListBoxItemDataTemplate">
<TextBlock Text="{Binding}" Style="{StaticResource YourTextBlockStyler}"/>
</DataTemplate>
</UserControl.Resources>
Powrót do listbox - Teraz mamy utworzone wszystkie style i szablony w sekcji Zasoby możemy zaktualizować listbox z style = „” ItemContainerStyle = „” i ItemTemplate = „”
<ListBox Width="100"
x:Name="myComboBox" Margin="8"
ItemsSource="{Binding ListBoxListSource}"
SelectedIndex="{Binding ListBox}"
Style="{StaticResource ListBoxStyle}"
ItemContainerStyle="{StaticResource ItemContainerStyle}"
ItemTemplate="{StaticResource ListBoxItemDataTemplate}">
</ListBox>
Wtedy twoje nudne pole listy przemieni w magiczny sposób do listy całkowicie restyled z czerwonego przełącznika granicznego
Od
do 
Wszystko bez edycji pojedynczego System.ResourceBrush =]
Myślę, że szukasz wiązania xaml do DynamicResource. Zobacz przykładowe pytanie dotyczące SO. http://stackoverflow.com/q/17502467/1862333 – failedprogramming
@failedprogramming Próbowałem użyć DynamicResources, aby to osiągnąć, ale nie osiągnęliśmy żadnego sukcesu. Zaktualizowałem mój oryginalny wpis moją próbą. – downeysyndrome
@failedprogramming Twoja odpowiedź połączyła się, dzięki czemu mogłeś się pięknie przygotować. Dodam odpowiedź z moją ostateczną rezolucją dla innych. – downeysyndrome