تغيير لون الخلفية لفاصل في مربع التحرير والسرد ملزمة بيانات WPF

StackOverflow https://stackoverflow.com/questions/4267822

  •  28-09-2019
  •  | 
  •  

سؤال

لدي combobox مرتبط بمجموعة بيانات تستخدم بعد ذلك datatrigger لإدخال فاصل عندما يواجه "-في البيانات (مثال في هذا السؤال).

تحتوي خلفية القائمة على لون مخصص ، وضبطها باستخدام قاموس الموارد. اللون في هذه الحالة هو #FFF8F4C5

إذا قمت بإضافة فاصل إلى مربع التحرير والسرد البسيط غير قاعدة بيانات ، فإنه يظهر بشكل صحيح. ولكن عند إضافته باستخدام datatrigger ، لا يبدو الأمر وكأنه بقية القائمة ، كما ترون أدناه (يحتوي على خلفية بيضاء).

white background on separator

إذا قمت بتعيين خلفية الفاصل ، فإنه يغير بالفعل الخط الداكن إلى أي لون. لا يمكنني العثور على كيفية تغيير المنطقة البيضاء لتتناسب مع نفس اللون القائمة.

هل كانت مفيدة؟

المحلول

في 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"/>

يجب أن تفعل ذلك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top