2010-05-31 82 views
0

我在使用wpf並開始使用mvvm的代碼中工作。到目前爲止,我沒有問題,當我有一個元素,我必須在屏幕上顯示它的值(綁定屬性的特定名稱)。但現在,我必須處理一個房產清單,不知道它的名稱。所以我創建了一個名爲GClass的類,它只有兩個屬性,名稱和值。我創建了ObservableCollection,並用直接值填充現有值,並將視圖(lstview)datacontext與我創建的對象對齊。但我看不到任何結果,它總是顯示一個空白的列表框。有人能告訴我,如果看到爲什麼發生?將ObservableCollection綁定到WPF/MVVM中的ListBox時出現的問題

代碼的C#

認爲

<ListBox Margin="5,5,5,25" ItemsSource="{Binding VDt}"> 
     <ListBox.Template> 
      <ControlTemplate>      
       <ListViewItem Content="{Binding Name}"></ListViewItem> 
       <ListViewItem Content="{Binding Value}"></ListViewItem> 
      </ControlTemplate> 
     </ListBox.Template> 
    </ListBox> 

我的研究在這裏,但我看不到的

  VDt = new ObservableCollection<GClass>(); 
     var vhDt = message.SelectSingleElement(typeof (Vh)) as Vehiculo; 

     if(vhDt != null) 
     { 
      VDt.Add(new GClass() {Name = "Numero: ", Value = ""}); 
      VDt.Add(new GClass() {Name = "Marca: ", Value = ""}); 
      VDt.Add(new GClass() {Name = "Conductor: ", Value = ""}); 

      lstview.DataContext = this; 
      _regionManager.RegisterViewWithRegionInIndex(RegionNames.MainRegion, lstview, 0); 

代碼,我在做什麼錯。如果有人幫助我,我會補充一點。

+0

你會看到填充的列表框或沒有項目? – 2010-05-31 16:11:21

+0

我看到一個空白框,根本沒有項目或滾動條,就像您在設計屏幕中看到列表框一樣 – alexqs 2010-06-01 08:43:32

回答

1

幾件事情在這裏:

首先,<ListBox.Template>讓你描述你希望如何繪製列表框本身的模板。你所要做的(貌似)是渲染列表框內的項目,所以你需要<ListBox.ItemTemplate>

其次,ItemTemplate模板內,你需要創建,而不是一個<ControlTemplate>而是<DataTemplate>

最後一件事:就個人而言,我會用我的DataTemplates內適合於目的的控制,以使意見(以下EG TextBlocks代替ListViewItems

所以你的XAML應該是這個樣子:

<ListBox Margin="5,5,5,25" ItemsSource="{Binding VDt}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Name}" /> 
       <TextBlock Text="{Binding Value}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

希望這會有所幫助:) 伊恩

+0

謝謝!它工作完美。 我甚至看到,你可以採取 ...出來,並用讓你有一個通用視圖容器代替它,並在特定視圖中的細節 – alexqs 2010-06-04 07:15:14

+0

@alexqs你肯定可以:) – kiwipom 2010-06-05 01:41:24

+0

關於文本以這種形式綁定,可能需要嵌套文本塊以保留正確的文本佈局(包裝,間距等)。試試這個: Gusdor 2012-02-28 10:26:55

相關問題