Master Detail же Просмотреть элементы управления связыванием - PullRequest
0 голосов
/ 03 июня 2010

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

<!-- // 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 Ответ

1 голос
/ 03 июня 2010

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

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

...