2012-07-17 9 views
7

Próbuję zmienić styl mojego combobox w mieszance Wyrażenie.Zmiana kolorów ramki kombinowanej WPF

Co zrobiłem było stworzenie combobox i poszedł kliknij prawym przyciskiem myszy> Edytuj szablon> Edycja Kopiuj

I mogę zmienić kolory combobox, z wyjątkiem nie jest biały granica pomiędzy tle z combobox i granicy z combobox. Oto ekran, dzięki czemu można zobaczyć:

enter image description here

Jak widać, istnieje granica, gdy pomiędzy niebieskim i czerwonym. O ile mogę powiedzieć, kod, aby zmienić kolor combobox jest następujący:

<ToggleButton Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, 
RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource 
ComboBoxReadonlyToggleButton}" BorderBrush="Red" Background="Blue"/> 

Ale nie wiem co, zawsze jest biała obwódka. Jak się go pozbyć?

Odpowiedz

0

Problem jest, kiedy Edycja Kopiuj, edytowania kopię z wbudowanym elementów chromowanych Microsoft. Aby zmienić tę granicę zewnętrzną, musisz zastąpić te bity normalnymi kontrolkami WPF, aby można było zmieniać wartości. Dla pola kombi, co chcesz użyć kodu tutaj: http://msdn.microsoft.com/en-us/library/ms752094

e: To jest część, którą chcesz edytować

<Border x:Name="Border" 
     Grid.ColumnSpan="2" 
     CornerRadius="2" 
     BorderThickness="1"> 
    <Border.BorderBrush> 
    <LinearGradientBrush EndPoint="0,1" 
         StartPoint="0,0"> 
     <GradientStop Color="{DynamicResource BorderLightColor}" 
        Offset="0" /> 
     <GradientStop Color="{DynamicResource BorderDarkColor}" 
        Offset="1" /> 
    </LinearGradientBrush> 
    </Border.BorderBrush> 
1

wiem, jest to stara sprawa, a to specyficzne mieszanka ale kiedy Googling dla tego problemu, to jedna z pierwszych rzeczy, które znalazłem.

Naprawdę prosty przykład sposobu na ustalenie tego, że jest trochę mniej skomplikowane niż pierwsza odpowiedź wspomniano jest ustawienie właściwości „styl”. (Nie jestem pewien, czy to dotyczy mieszania, ponieważ nie używam blendowania, ale dla zwykłego wpf w visual studio, to działa)

Na przykład poniższy kod tworzy okno podobne do tego wymienionego w pytaniu, ale z białe linie (w rozwijanych pozycjach) można edytować.

<ComboBox Background="Blue" BorderBrush="Red"> 
    <ComboBox.ItemContainerStyle> 
     <!-- Without this style section, there are white lines around the borders. Even if you set these properties in the comboBoxItem areas --> 
     <Style TargetType="ComboBoxItem"> 
      <Setter Property="Background" Value="Green"/> 
      <Setter Property="BorderBrush" Value="Purple"></Setter> 
     </Style> 
    </ComboBox.ItemContainerStyle> 
    <ComboBoxItem MouseMove="schedule" Name="cbi1">schedule</ComboBoxItem> 
</ComboBox>