2011-07-29 18 views
7

İki kullanıcı denetime sahibim, ilk önce her müşteri için bazı basit ayrıntıları görüntüleyen Müşteriler listesine bağlı bir liste kutusu.WPF - Kullanıcı denetimleri arasında liste kutusunun seçili konumuna bağla

İkinci kullanıcı denetimi I, ilk kullanıcı denetiminin liste kutusunda hangi müşterinin seçildiğine dair daha ayrıntılı bir görünüm sağlamak istiyorum.

İlk denetimde seçilen öğeye bağlanmak için ikinci denetimde bir ciltleme ayarlamak mümkün müdür?

My Liste kutusu: (So Far)

  <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> 

Ayrıntılı görünüm UserControl'ın

<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> 

Teşekkür Greg

+1

TextBlock bağlayıcınızı Text = "{Binding name}" olarak değiştirirseniz, ne yapmanız gerekir. Bir mülk olarak tanımlamak ve bazı "kurallara" uymak için Müşteri’deki mülk beyannamenizdeki "Ad" ı "ad" olarak değiştirmenizi öneririm. – Dun

cevap

3

Müşteri nesne sizin ViewModel bir özelliği var öneririm SelectedCustomer ve bu gibi liste kutusu SelectedItem onu ​​bağlamak demek -

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

hem kullanıcı denetimleri aynı görünümde olduğu belirtilen bu yana, Bu yüzden aynı ViewModel'i paylaştıklarını varsayıyorum. Bu durumda, veri içeriğini bu şekilde ayarlayabilirsiniz -

<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

Evet, yapabilirsin - ListBox CustomerList bir isim verirsen sonra SelectedItem özelliğine "{Binding ElementName = CustomerList, Path = SelectedItem}" gibi bir bağ kullanarak bağlanabilirsiniz.

+1

@Mark .. her iki liste kutusu aynı kullanıcı denetiminde ise, çözüm işe yarar. Ancak greg'e göre, liste kutuları farklı kullanıcı denetiminde – Bathineni

+0

@ greg .. kullanılıyorsa, her iki kullanıcı denetimini de başka bir kullanıcı denetiminde veya pencerede kullanıyorsunuz ..? mümkünse ur xaml kodunu yayınlamaya çalışın .. atleast sadeleştirilmiş bir – Bathineni

+0

@bathineni Evet, her iki kullanıcı denetimi de aynı kullanıcı kontrolünde kullanılır ve her seferinde sadece bir örnek olacak. Özgün soru –

İlgili konular