2011-07-29 31 views
7

Tôi có hai usercontrols, hộp kiểm đầu tiên có hộp danh sách được gắn với danh sách Khách hàng hiển thị một số chi tiết đơn giản cho từng khách hàng.WPF - Ràng buộc để chọn sửa hộp danh sách giữa các điều khiển của người dùng

Điều khiển người dùng thứ hai Tôi muốn là chế độ xem chi tiết hơn về bất kỳ khách hàng nào được chọn trong hộp danh sách của điều khiển người dùng đầu tiên.

Có thể thiết lập một ràng buộc trong điều khiển thứ hai để liên kết với mục đã chọn trong điều khiển người dùng đầu tiên không?

Danh sách hộp của tôi:

  <ListBox Name="lstCustomer" ItemsSource="{Binding Customers}" >   
       <ListBox.Resources> 

        <DataTemplate DataType="{x:Type MyApplication:Customers}"> 
         <Label Grid.Row="0" Content="{Binding Customer.name}" FontSize="14" FontWeight="Bold" Padding="5" />        
           <Label Grid.Row="1" Grid.Column="0" Content="{Binding Customer.telephone}" Padding="10,5" />     
          </Grid> 
         </Grid> 

        </DataTemplate> 
       </ListBox.Resources> 
      </ListBox> 

xem chi tiết UserControl (So Far)

<Grid x:Name="containingGrid" DataContext="{Binding ElementName=lstCustomers, Path=SelectedItem}"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock Text="{Binding Customer.name}" FontSize="23"/> 
     </Grid> 

Cảm ơn Greg

+1

Bạn nên làm gì nếu bạn thay đổi TextBlock ràng buộc thành Text = "{Binding name}". Tôi sẽ đề nghị bạn thay đổi "tên" thành "Tên" trong tờ khai tài sản của bạn trong Khách hàng để xác định nó là tài sản và làm cho nó tuân theo một số "quy tắc!". – Dun

Trả lời

3

tôi sẽ đề nghị để có một tài sản trong ViewModel của bạn đối tượng khách hàng nói SelectedCustomer và ràng buộc nó vào SelectedItem của listbox của bạn như thế này -

<ListBox Name="lstCustomer" ItemsSource="{Binding Customers}" 
          SelectedItem = "{Binding SelectedCustomer}" >   
       . . . . . 
</ListBox> 

Vì bạn nói rằng cả hai điều khiển người dùng là trong cùng một quan điểm, vì vậy tôi giả định rằng họ chia sẻ cùng một ViewModel. Trong trường hợp đó, bạn có thể chỉ cần thiết lập bối cảnh dữ liệu theo cách này -

<Grid x:Name="containingGrid" DataContext="{Binding SelectedCustomer}"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 
    <TextBlock Text="{Binding Name}" FontSize="23"/> 
</Grid> 
1

Vâng, bạn có thể - nếu bạn cho ListBox một tên CustomerList sau đó bạn có thể liên kết với thuộc tính SelectedItem của nó bằng cách sử dụng một ràng buộc như "{Binding ElementName = CustomerList, Path = SelectedItem}".

+1

@Mark .. giải pháp của bạn hoạt động nếu cả hai hộp danh sách đều nằm trong cùng một điều khiển người dùng. nhưng theo greg ông là rất rõ ràng rằng hộp danh sách bth là trong kiểm soát người dùng khác nhau – Bathineni

+0

@ greg .. là bạn sử dụng cả hai điều khiển người dùng trong điều khiển người dùng khác hoặc Window ..? nếu có thể cố gắng xuất bản mã xaml ur .. ít nhất đơn giản hóa một – Bathineni

+0

@bathineni Có cả hai điều khiển người dùng được sử dụng trong cùng một điều khiển người dùng và sẽ chỉ có một trường hợp tại một thời điểm. Tôi đã đăng xaml để xem chi tiết kiểm soát người dùng trong câu hỏi ban đầu của tôi –

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