2016-07-14 2 views
0

Я пытаюсь установить выбранный элемент Combo Box для индекса = 0, когда SelectedValue имеет значение Null. Что случилось с триггером данных? Ошибка: SelectedIndex не признается свойствоЗначение по умолчанию для поля со списком wpf

<ComboBox x:Name="ACombobox" ItemsSource="{Binding Mode=OneWay, Source={StaticResource AList}}" 
        DisplayMemberPath="TypeName" SelectedValuePath="TypeName" 
        SelectedValue="{Binding AnObj.Type, Mode=TwoWay}" > 
         <ComboBox.Triggers> 
          <DataTrigger Binding="{Binding}" Value="{x:Null}"> 
           <Setter Property="SelectedIndex" Value="0" /> 
          </DataTrigger> 
         </ComboBox.Triggers> 
        </ComboBox> 

ответ

1

Вы должны сделать это путем создания триггера стиля, как показано ниже

<ComboBox x:Name="ACombobox" ItemsSource="{Binding Mode=OneWay, Source={StaticResource AList}}" 
       DisplayMemberPath="TypeName" SelectedValuePath="TypeName" 
       SelectedValue="{Binding AnObj.Type, Mode=TwoWay}" > 
    <Style TargetType="ComboBox"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding}" Value="{x:Null}"> 
       <Setter Property="SelectedIndex" Value="0" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</ComboBox> 

ошибка говорит, что it does not have a qualifying type name так, создав стиль его применить к Combobox при установке TargetType="ComboBox"


<ComboBox x:Name="ACombobox" ItemsSource="{Binding AList}" 
      DisplayMemberPath="TypeName" SelectedValuePath="TypeName" 
      SelectedValue="{Binding AnObj.Type, Mode=TwoWay}" > 
    <ComboBox.Resources> 
    <Style TargetType="ComboBox"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding SelectedItem}" Value="{x:Null}"> 
       <Setter Property="SelectedIndex" Value="0" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    </ComboBox.Resources> 
</ComboBox> 

Это работает для меня.


Пример с StaticResource

 <Window.Resources> 
     <x:Array x:Key="StringList" Type="System:String"> 
      <System:String>Line 1</System:String> 
      <System:String>Line 2</System:String> 
      <System:String>Line 3</System:String> 
      <System:String>Line 4</System:String> 
     </x:Array>  
    </Window.Resources> 
    <ComboBox ItemsSource="{StaticResource StringList}" > 
     <ComboBox.Resources> 
     <Style TargetType="ComboBox"> 
      <Style.Triggers> 
       <Trigger Property="SelectedItem" Value="{x:Null}"> 
        <Setter Property="SelectedIndex" Value="0"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ComboBox.Resources> 
    </ComboBox> 
+0

Абиным: Я получил исключение: Элементы коллекция должна быть пустой перед использованием Items Source. – TheOne

+0

Alist - это статический ресурс, определенный в xaml. Если я возьму этот стиль, все будет хорошо, и я не получу ошибок. – TheOne

+0

Я получаю ту же проблему при попытке вашего кода. – Kcvin

Смежные вопросы