Попытка переопределить текстовое поле для стиля комбинированного списка (исключение System. windows .markup.staticresourceholder) - PullRequest
0 голосов
/ 19 февраля 2020

Я новичок в WPF и в соответствии с моим предыдущим вопросом Как сделать текст выделенного элемента красным и жирным на триггере (в выпадающем списке) У меня все еще есть проблема с созданием выбранного элемента (но не со всеми элементами выпадающего списка) ) текст красный и жирный, если его свойство IsNotCorrect имеет значение true. Если быть более конкретным, у меня есть system. windows .markup.staticresourceholder исключение (кажется, что все конвертеры объявлены, не уверен в моем объявлении нового стиля и правильном порядке для него). Вот шаги, которые я сделал:

  • создать стиль, чтобы переопределить текстовое поле для моего комбинированного списка в начале моего файла xaml:

    <Style x:Key="UserDefinedStyle" TargetType="{x:Type ComboBox}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ComboBox}">
                        <TextBox x:Name="PART_EditableTextBox"          
               Template="{StaticResource ComboBoxTextBox}"
               HorizontalAlignment="Left"
               VerticalAlignment="Bottom"
               Margin="3,3,23,3"
               Focusable="True"
               Background="Transparent"
               Visibility="Hidden"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
  • попробуйте применить этот стиль к моему списку (эта часть внутри другого стиля.

    <Border BorderBrush ="{Binding SelectedReason.IsNotCorrect, Converter={StaticResource DisablingBoolToColorConverter}}" BorderThickness="2">
    <ComboBox x:Name="REASON_ID" DisplayMemberPath="Name" IsReadOnly="True" IsEditable="True" SelectedItem="{Binding SelectedReason, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" Style"{DynamicResource UserDefinedStyle}">
         <ComboBox.ItemsSource>                                                          
              <CompositeCollection>
                  <ComboBoxItem Content="{DynamicResource lang_Common_SelectItem}" IsEnabled="False"/>
                  <CollectionContainer Collection="{Binding Source={StaticResource StaticReasons}}"/>
                  <TextBox x:Name="Part_EditableTextBox">
                     <TextBox.Style>
                        <Style TargetType="{x:Type TextBox}" BasedOn="{x:Null}">
                            <Style.Triggers>
                               <DataTrigger Binding="{Binding SelectedItem.IsNotCorrect, RelativeSource={RelativeSource AncestorType=ComboBox}}" Value="True">
                                    <Setter Property="Foreground" Value="Red" />
                                    <Setter Property="FontWeight" Value="Bold" />
                               </DataTrigger>
                            </Style.Triggers>
                         </Style>
                     <TextBox.Style>
                  </TextBox>
             </CompositeCollection>
        </ComboBox.ItemsSource>                                                    
    </ComboBox>                                                
    </Border>
    
...