2010-11-01 83 views
0

我有一个静态资源,它提供了一个用作ComboBox的DataSource的性别列表。当组合框呈现时,ComboBoxItem中没有任何文本/内容。Silverlight 4组合框呈现问题

public class Gender 
{ 
    public string code; 
    public string description; 
} 

public class LookupTables 
{ 

    public List<Gender> GenderList 
    { 
     get 
     { 
      List<Gender> g = new List<Gender>(); 
      g.Add(new Gender{code="M",description="Male"}); 
      g.Add(new Gender{code = "F", description = "Female" }); 
      return g; 
     } 
    } 
} 

这是App.xaml中的条目使之成为一个一个应用广泛的静态资源

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Assets/Styles.xaml"/> 
      <ResourceDictionary> 
       <res:ResourceWrapper x:Key="ResourceWrapper" /> 
       <app:NotOperatorValueConverter x:Key="NotOperatorValueConverter" /> 
       <hlpr:LookupTables x:Key="LookupTables"/> 
      </ResourceDictionary> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary>     
</Application.Resources> 

这里是ComboBox片段,用这种静态资源

   <ComboBox Height="23" Name="comboBox1" Width="120" 
         ItemsSource="{Binding Source={StaticResource LookupTables},Path=GenderList}" 
         SelectionChanged="comboBox1_SelectionChanged" 
         DisplayMemberPath="description"/> 
+1

我知道这不是你问的问题,但是你是否意识到每次访问属性时都会创建一个新的列表实例?除了潜在的性能影响之外,这也可能对绑定产生副作用。考虑让一个初始化一次并多次使用的实例。 – Murven 2010-11-02 05:18:29

回答

1

我想通了。这是因为Gender类需要有相应的属性设置器

public class Gender 
{ 
    public string code{get;set;} 
    public string description{get;set;} 
}