2010-06-03 4 views
0

say У меня есть ListView с ItemControl. И деталь, которая отображает выбранный элемент из ListView. Оба находятся на одной странице xaml. Я пробовал все, чтобы выполнить это, но что я пропустил?Master Detail same Просмотреть элементы управления привязкой

<!-- // List --> 
<ItemsControl ItemsSource="{Binding Path=Model, ElementName=SomeListViewControl, Mode=Default}" SnapsToDevicePixels="True" Focusable="False" IsTabStop="False"> 
    <ItemsControl.ItemTemplate> 
      <DataTemplate> 
        <SomeListView:SomeListItemControl x:Name=listItem/> 
       </DataTemplate> 
     </ItemsControl.ItemTemplate> 
</ItemsControl> 

<!-- // Details --> 
<Label Content="Begindatum" FontSize="16" VerticalAlignment="Center" Grid.Row="1" Margin="2,0,0,0"/> 
<TextBox x:Name="Begindatum" Grid.Column="1" Grid.Row="1" Text="{Binding Path=BeginDate, ElementName=listItem,Converter={StaticResource DateTimeConverter}, ConverterParameter=dd-MM-yyyy}" IsEnabled="False" Style="{DynamicResource TextBoxStyle}" MaxLength="30"/> 


public event EventHandler<DataEventArgs<SomeEntity>> OnOpenSomething; 

public ObservableCollection<SomeEntity> Model 
{ 
      get { return (ObservableCollection<SomeEntity>)GetValue(ModelProperty); } 
      set 
     { 
       Model.CollectionChanged -= new NotifyCollectionChangedEventHandler(Model_CollectionChanged); 
       SetValue(ModelProperty, value); 
       Model.CollectionChanged += new NotifyCollectionChangedEventHandler(Model_CollectionChanged); 
       UpdateVisualState(); 
    } 
} 

public static readonly DependencyProperty ModelProperty = DependencyProperty.Register("Model", typeof(ObservableCollection<SomeEntity>), typeof(SomeListView), new UIPropertyMetadata(new ObservableCollection<SomeEntity>(), new PropertyChangedCallback(ChangedModel))); 


private static void ChangedModel(DependencyObject source, DependencyPropertyChangedEventArgs e) 
{ 
    SomeListView someListView = source as SomeListView; 

    if (someListView.Model == null) 
    { 
     return; 
    } 

    CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(someListView.Model); 

} 

private void Model_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
{ 
    if (Model == null) 
    { 
     return; 
    } 
} 

ответ

1

Не используйте ItemsControl - ItemsControl не имеет SelectedItem свойство - и, следовательно, вы не можете определить, какой из них выбран.

Используйте ListBox вместо, а затем в разделе детали сделать привязку следующим образом: ... DataContext="{Binding SelectedItem,ElementName=ListboxName}" ... где ListboxName является Name собственности ListBox вы используете.