2011-01-29 35 views
5

Tôi đang phát triển một ứng dụng có số lượng năng động của PanoramaItems, hiện tại tất cả đều được thêm vào bằng cách đưa một danh sách vào Panorama bằng cách sử dụng thuộc tính 'ItemsSource' của nó.Làm thế nào để lập trình thêm các mục vào một PanoramaItem trong WP7

Nhưng sự cố xảy ra khi tôi cố thêm mọi thứ vào PanoramaItems đã tạo. Bây giờ, tôi có thể thêm một ListBox, và nó hoạt động như mong đợi, nhưng tôi thực sự muốn thêm một cái gì đó mà tôi có nhiều quyền kiểm soát hơn một chút (có thể một số loại điều khiển tùy chỉnh).

Bây giờ, tôi đã tìm thấy một số địa điểm hợp lý chỉ cho tôi cách thực hiện điều này bằng cách chỉnh sửa MainPage.xaml, nhưng vì tôi không biết có bao nhiêu người trong số họ cần tôi không thể (tôi nghĩ) cái đó.

Sự cố được thêm vào bởi thực tế là lớp PanoramaItem không có thuộc tính 'Mục', chỉ là một 'Nội dung' (đó là điều tôi nghĩ tôi cần).

Tôi nghĩ rằng tôi cần phải xác định một tập tin .xaml/cs cho điều khiển tùy chỉnh và sau đó bằng cách nào đó áp dụng được cho các PanoramaItem nhưng tôi thực sự không chắc chắn

Trả lời

3

tôi sẽ giả định rằng bạn' tái sử dụng một khung MVVM ở đây, vì vậy nếu không, tôi xin lỗi.

Chính xác của bạn khi nghĩ rằng bạn có thể muốn sử dụng điều khiển người dùng cho Mục Pano. Khi bạn đã có mã HTML XAML mới:

<controls:Panorama ItemsSource="{Binding PanoViewModels}"> 
    <controls:Panorama.ItemTemplate> 
      <DataTemplate> 
       <ctl:PanoItemControl /> 
      </DataTemplate> 
    </controls:Panorama.ItemTemplate> 
</controls:Panorama> 

rõ ràng điều này được đơn giản hóa, nhưng nên lấy ý tưởng. Trong kiểm soát của bạn, bạn có thể liên kết trực tiếp với các đối tượng chứa trong PanoViewModels.

+0

Làm việc một điều trị, cảm ơn! –

2

Nếu bạn đang thực hiện MVVM và databinding thì câu trả lời của Barranger Ridler có vẻ tốt.

Nếu bạn muốn viết mã C# tùy chỉnh cho mỗi đứa trẻ, bạn cần đặt vùng chứa (ví dụ: Lưới hoặc StackPanel) tại Nội dung của mỗi PanoramaItem - và sau đó bạn có thể Thêm vào Trẻ em của vùng chứa đó. Tôi không có mã C# để tay, nhưng đây là mã ironruby - nó thêm 5 TextBlocks vào một StackPanel sau đó đặt StackPanel là nội dung của PanoramaItem - nó sẽ khá dễ dàng để chuyển đổi qua lại.

stack_panel = StackPanel.new 

for i in 1..5 
    t = TextBlock.new 
    t.font_size = i*24 
    t.text = "Line " << i.to_s 
    s.children.add t 
end 

pi = PanoramaItem.new 
pi.header = "Title" 
pi.content = stack_panel 

panorama.items.add pi 

dựa trên mã http://script.iron7.com/#/Script/Detail?scriptId=ed9e4e216a474432a9e88523b201965d&userLowerCaseName=stuart

Các vấn đề liên quan