Bunu, bir liste kutusu öğesi için varolan denetim şablonunu özelleştirerek yapabilirsiniz. Bunu yapmanın kolay yolu, Expression Blend'i açmak, bir ListBoxItem öğesini sağ tıklatmak, Denetim Bölümlerini Düzenleme (Şablon) 'a gidin ve Bir Kopyayı Düzenle ...' yi seçin, ardından fillColor ve fillColor2 dikdörtgenlerinin Dolgu rengini gerektiği gibi özelleştirin.
Xaml aşağıda ListBoxItem fareyle üzerine renkli şeffaf olmaya ayarlar ve seçilen renk yeşil parlak olması ancak bu ihtiyaçlarınıza özelleştirebilirsiniz:
<UserControl x:Class="SilverlightApplication2.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
Width="400" Height="300" Background="#FF000000">
<UserControl.Resources>
<Style x:Key="ListBoxItemStyleTransparent" TargetType="ListBoxItem">
<Setter Property="Padding" Value="3"/>
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Top"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="TabNavigation" Value="Local"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid Background="{TemplateBinding Background}">
<vsm:VisualStateManager.VisualStateGroups>
<vsm:VisualStateGroup x:Name="CommonStates">
<vsm:VisualState x:Name="Normal"/>
<vsm:VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="fillColor" Storyboard.TargetProperty="Opacity">
<SplineDoubleKeyFrame KeyTime="0" Value=".35"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="Disabled">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="contentPresenter" Storyboard.TargetProperty="Opacity">
<SplineDoubleKeyFrame KeyTime="0" Value=".55"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
<vsm:VisualStateGroup x:Name="SelectionStates">
<vsm:VisualState x:Name="Unselected"/>
<vsm:VisualState x:Name="Selected">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="fillColor2" Storyboard.TargetProperty="Opacity">
<SplineDoubleKeyFrame KeyTime="0" Value=".75"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
<vsm:VisualStateGroup x:Name="FocusStates">
<vsm:VisualState x:Name="Focused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetName="FocusVisualElement" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="Unfocused"/>
</vsm:VisualStateGroup>
</vsm:VisualStateManager.VisualStateGroups>
<Rectangle x:Name="fillColor" IsHitTestVisible="False" Opacity="0" RadiusX="1" RadiusY="1" Fill="Transparent"/>
<Rectangle x:Name="fillColor2" IsHitTestVisible="False" Opacity="0" Fill="#FF00FF00" RadiusX="1" RadiusY="1"/>
<ContentPresenter HorizontalAlignment="Left" Margin="{TemplateBinding Padding}" x:Name="contentPresenter" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
<Rectangle x:Name="FocusVisualElement" Visibility="Collapsed" Stroke="#FF6DBDD1" StrokeThickness="1" RadiusX="1" RadiusY="1"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<ListBox x:Name="ListBoxTest">
<ListBoxItem Content="Some String" Style="{StaticResource ListBoxItemStyleTransparent}" />
</ListBox>
</Grid>
</UserControl>
fillColor Dikdörtgen kullanılacak rengi belirtir Kullanıcı bir ListBoxItem üzerinde mouses. Yukarıdaki kodda bunu Şeffaf olarak ayarladım, böylece ListBoxItem üzerinde farenizi belirttiğinizde hiçbir renk görünmeyecek.
fillColor2, bir ListBoxItem seçildiğinde kullanılacak rengi belirtir. Yukarıdaki kodda # FF00FF00 belirttim, böylece bir ListBoxItem seçildiğinde renk parlak yeşil olacak.
Durumunuzda, kullanıcı bir öğeyi seçtiğinde hiçbir renk simülasyonu yapmak için fillColor2 Rectangle öğesinin Dolgu özelliğini Saydam olarak ayarlamanız gerekir.
gelen bu ne yazık ki ben farklı öğeleri her türlü listbox doldurmak olarak programlama stili ayarlamak gerekir, çok iyi bir cevaptır. Belki de biraz veri templating hrmm kullanmam gerekiyor ... – JSmyth
Cevabınız myListItem.Style = (Style) this.Resources ["ListBoxItemStyleTransparent"] ekleme ekleyerek çalıştı; Cevabınızı kabul edilen yanıt olarak işaretleyecektir :) – JSmyth
Evet, bu stili size programsal olarak gönderme biçiminizdir. Stili birden çok .xaml dosyalarında kullanıyorsanız, dikkat edilmesi gereken bir başka nokta da, App.xaml içinde içinde bildirilmesidir. Daha sonra Application.Current.Resources ["ListBoxItemStyleTransparent"] ile başvuru yapabilirsiniz. –