2009-09-08 30 views
11

Trong người dẫn chương trình của tôi, tôi có khách sạn này:Làm cách nào để gắn một Danh sách <string> vào một ItemsControl?

public List<string> PropertyNames { get; set; } 

Và tôi muốn ra khỏi danh sách những cái tên với một ItemsControl/DataTemplate như thế này:

<ItemsControl ItemsSource="{Binding PropertyNames}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Value}"/> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

Kể từ khi danh sách chung không có tên thuộc tính , làm cách nào để tôi tham chiếu giá trị trong báo cáo Ràng buộc của tôi?

Trả lời

29

hãy để tôi trả lời câu hỏi này, chỉ là {Binding}.

+0

+1. Ừ. Tôi nhầm lẫn nó với 'Path = ...' trong đó chấm hoạt động. –

+9

FYI, '.' hoạt động có hoặc không có 'Path ='. Trống được hiểu là '.'. Vì vậy, bạn có thể viết {Binding}, {Binding.}, Hoặc {Binding Path =.} Lưu ý rằng {Binding Path =} sẽ không hoạt động - bạn sẽ gặp lỗi trình biên dịch XAML. –

+2

haha. Câu hỏi được hỏi lúc 11:15 và được trả lời chính xác cùng một người chỉ một phút sau đó. Sau đó, câu trả lời được chấp nhận :) cũng được thực hiện. –

0

Một cách dễ dàng hơn để thực hiện được điều này cũng chỉ đơn giản là sử dụng:

<ItemsControl ItemsSource="{Binding PropertyNames}"/> 

Theo mặc định, điều này sẽ tạo ra một StackPanel dọc và thêm mỗi phần tử trong TextBlock riêng của mình. Theo MSDN, tính năng này hoạt động đối với bất kỳ điều nào sau đây:

  • Một chuỗi.
  • Đối tượng DateTime.
  • Một đối tượng UIElement.
  • Điều khiển bảng điều khiển chứa hình elip và TextBlock.
Các vấn đề liên quan