تغيير لون الخلفية لفاصل في مربع التحرير والسرد ملزمة بيانات WPF
سؤال
لدي combobox مرتبط بمجموعة بيانات تستخدم بعد ذلك datatrigger لإدخال فاصل عندما يواجه "-في البيانات (مثال في هذا السؤال).
تحتوي خلفية القائمة على لون مخصص ، وضبطها باستخدام قاموس الموارد. اللون في هذه الحالة هو #FFF8F4C5
إذا قمت بإضافة فاصل إلى مربع التحرير والسرد البسيط غير قاعدة بيانات ، فإنه يظهر بشكل صحيح. ولكن عند إضافته باستخدام datatrigger ، لا يبدو الأمر وكأنه بقية القائمة ، كما ترون أدناه (يحتوي على خلفية بيضاء).
إذا قمت بتعيين خلفية الفاصل ، فإنه يغير بالفعل الخط الداكن إلى أي لون. لا يمكنني العثور على كيفية تغيير المنطقة البيضاء لتتناسب مع نفس اللون القائمة.
المحلول
في ControlTemplate ، أرفق الفاصل في حدود مع خلفية مرتبطة بخلفية ComboBoxItem الوالد. شيء من هذا القبيل:
<ControlTemplate TargetType="{x:Type ComboBoxItem}">
<Border Background="{TemplateBinding Background}">
<Separator HorizontalAlignment="Stretch" IsEnabled="False"/>
</Border>
</ControlTemplate>
نصائح أخرى
استخدم نمط فاصل:
<Style x:Key="SeparatorStyle1" TargetType="{x:Type Separator}">
<Setter Property="Background" Value="{DynamicResource
{x:Static SystemColors.ControlDarkBrushKey}}"/>
<Setter Property="Margin" Value="0,2,0,2"/>
<Setter Property="Focusable" Value="false"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Separator}">
<Border Height="1" SnapsToDevicePixels="true"
Background="#FFCCD480" BorderBrush="#FF633A3A" BorderThickness="0,0,0,1"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
واستخدامه هكذا
<ComboBox Background="#FFD2D2B5">
<ListBoxItem Content="item1"/>
<ListBoxItem Content="item2"/>
<Separator Style="{DynamicResource SeparatorStyle1}"/>
<ListBoxItem Content="item3"/>
يجب أن تفعل ذلك