WPF ListBox: как обновить данные с привязкой - PullRequest
0 голосов
/ 18 января 2010

У меня есть список, который отображает информацию о списке объектов:

            <ListBox Grid.Column="0" Height="152" Name="CustomersList" HorizontalAlignment="Stretch">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Path=Name, Mode=OneWay}"/>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

Я хотел бы показать более подробную информацию о выбранном элементе в другом блоке, но я не знаю (и не могу найти) какпривязать выбранный элемент к контексту данных этого блока.Я думаю, это должно быть примерно так:

                <Grid Grid.Column="1" DataContext="{Binding Path=ItemSelected, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="150"/>
                    <ColumnDefinition Width="250"/>
                </Grid.ColumnDefinitions>

                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition/>
                    <RowDefinition/>
                </Grid.RowDefinitions>

                <TextBlock Grid.Row="0" Grid.Column="0" Text="Id" VerticalAlignment="Center" />
                <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Path=Id}" VerticalAlignment="Center"/>

                <TextBlock Grid.Row="1" Grid.Column="0" Text="Name" VerticalAlignment="Center"/>
                <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Path=Name}" VerticalAlignment="Center"/>

                <StackPanel Grid.Row="2" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Center">
                    <Button Content="Add new" />
                    <Button Content="Store changes" />
                </StackPanel>
            </Grid>

Но проблема в том, что элемент данных, который будет привязан к сетке, нигде не указан, и я не знаю, как это сделать.

Любое предложение будет приветствоваться.

Спасибо!

PS Я пытался указать CustomersList.ItemsSource как DataContext для Grid - это не дало никакого результата.

1 Ответ

2 голосов
/ 18 января 2010

Вы можете привязать к свойству SelectedItem объекта ListBox, одним из способов является использование ElementName.

<Grid DataContext="{Binding ElementName=CustomersList, Path=SelectedItem}"> </Grid>
...