2012-04-17 36 views
6

Tôi hiện đang làm việc với các điều khiển Tab và đã tạo ra một khu vực để nó sẽ trở thành máy chủ của tôi.WPF Prism làm thế nào để có quan điểm trùng lặp trong một khu vực

những gì tôi đang cố gắng làm là thêm cùng một chế độ xem cho một khu vực hai lần .. bạn có thể hỏi tại sao? và ứng dụng của nó là ứng dụng trò chuyện đơn giản - sẽ có nhiều phiên bản của chế độ xem nhưng mỗi ứng dụng sẽ có thông tin khác nhau.

mã của tôi cho đến nay ;;

 IConversationDetailsPresentationModel convDetailsView1 = 
      this.Container.Resolve<IConversationDetailsPresentationModel>(); 

     IRegionManager manager = this.Container.Resolve<IRegionManager>(); 

     manager.RegisterViewWithRegion("TabRegion",() => convDetailsView1); 

     IConversationDetailsPresentationModel convDetailsView2 = 
      this.Container.Resolve<IConversationDetailsPresentationModel>(); 

     manager.RegisterViewWithRegion("TabRegion",() => convDetailsView2); 

Và quan điểm của tôi được đăng ký với sự thống nhất như vậy ;;

this.Container.RegisterType<IConversationDetailsPresentationModel,     ConversationDetailsPresentationModel>(
      new TransientLifetimeManager()); 

     this.Container.RegisterType<IConversationDetailsView, ConversationDetailsView>(
      new TransientLifetimeManager()); 

cũng có, XAML của tôi

<TabControl TabStripPlacement="Left" 
      Width="Auto" 
      Height="Auto" 
      cal:RegionManager.RegionName="TabRegion" 
      Name="TabRegion" 
      SelectedItem="{Binding SelectedTab}"> 
    <TabControl.ContentTemplate> 
     <DataTemplate> 
      <ContentControl cal:RegionManager.RegionName="TabContentRegion"> 

      </ContentControl> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 

Chỉnh sửa: Câu hỏi thực tế của tôi là thế này .. Có thể có quan điểm trùng lặp bên trong một khu vực? Khi tôi thử nó hiện tại tôi nhận được một ngoại lệ về nó đã được đăng ký .. những gì tôi thực sự cần là để bỏ qua này hoặc có thể tạo ra một khu vực mà sẽ cho phép nó.

cảm ơn sự giúp đỡ nào !!

cổ vũ. ste.

+0

Tôi không chắc chắn những gì bạn đang yêu cầu. Bạn không chỉ viết câu trả lời của riêng bạn cho câu hỏi của bạn. "Vùng được gắn với phần tử giao diện người dùng, chẳng hạn như ** ContentControl **, ** ItemsControl **, ** TabControl ** hoặc kiểm soát khách hàng và quản lý nội dung của phần tử giao diện người dùng". Vì vậy, yeah nó sẽ làm việc. –

+0

@Rikkos - xin vui lòng xem bình luận cập nhật của tôi .. những gì tôi về cơ bản đang tìm kiếm là có quan điểm trùng lặp trong khu vực của tôi! – Steoates

+1

chỉ là một ý tưởng khắc phục sự cố, bạn đã thử GetHashCode() để xem liệu TransientLifetimeManager có cung cấp cho bạn các phiên bản khác nhau không? –

Trả lời

2

Hãy thử điều này.

IRegion TabRegion = manager.Regions["TabRegion"]; 

tabRegion.Add(convDetailsView1); 
tabRegion.Add(convDetailsView2); 
+0

Điều đó không có tác dụng đáng buồn - nó đưa ra lỗi sau .. "{" Phần tử được chỉ định đã là con hợp lý của một phần tử khác. Ngắt kết nối nó trước. "}" – Steoates

+0

Chờ, lặp lại giống như CHÍNH XÁC, hoặc cùng loại. Tôi không thấy bạn sử dụng cùng một ví dụ. Tôi đã thực hiện một dự án thử nghiệm và tôi không có bất kỳ vấn đề gì. Tôi đã thử mọi thứ. Tôi có thể xem dự án của bạn nếu bạn có nó. đó sẽ là tùy chọn cuối cùng để giúp bạn –

+0

Cùng loại thực sự - chúng phải có trường hợp riêng của mô hình xem/trình bày chỉ với các dữ liệu khác nhau .. – Steoates

0

thử giải pháp này:

IRegion TabRegion = manager.Regions["TabRegion"]; 
tabRegion.Add(convDetailsView1).AdToRegion("make your region here",convDetailsView2); 
Các vấn đề liên quan