Связанная цель не обновляется - PullRequest
0 голосов
/ 26 марта 2011

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

<ListBox Name="listBox1" Width="224" Height="115" Margin="0,0,0,5" 
IsSynchronizedWithCurrentItem="False" HorizontalAlignment="Stretch" 
VerticalAlignment="Stretch" Style="{StaticResource ListBoxStyle1}"
ItemsSource="{Binding Source={StaticResource RecipeList}, XPath=recipeType,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
     <ListBox.ItemTemplate>
           <DataTemplate>
                <Grid Background="Black">
                      <Grid.ColumnDefinitions>
                           <ColumnDefinition Width="40"/>
                           <ColumnDefinition Width="170"/>
                      </Grid.ColumnDefinitions>
                      <StackPanel Grid.Column="1" Height="35" Background="#181818">
                           <TextBlock Background="Black" Margin="1" FontWeight="Bold" 
                           Padding="7" Height="33" Width="184" Foreground="#D0D0D0">
                                 <TextBlock.Text>
                                      <MultiBinding StringFormat="{}{0}">
                                           <Binding XPath="@description" />
                                      </MultiBinding>
                                 </TextBlock.Text>
                            </TextBlock>
                      </StackPanel>
                 </Grid>
           </DataTemplate>
      </ListBox.ItemTemplate>
</ListBox>

и для второго списка:

<ListBox Name="listBox2" Width="218" Height="144" Margin="0,0,0,5"
IsSynchronizedWithCurrentItem="True" Style="{StaticResource ListBoxStyle1}"
ItemsSource="{Binding ElementName=listBox1, Path=SelectedItem, Mode=OneWay}">
     <ListBox.ItemTemplate>
         <DataTemplate>
              <StackPanel Height="auto" Background="#181818">
                    <TextBlock Padding="7">
                          <StackPanel Background="Black" Margin="-5.5,-5.5,-6,-6.8">
                                <TextBlock Width="210" FontWeight="Bold" FontSize="12"
                                HorizontalAlignment="Left" Text="{Binding XPath=name}"
                                Background="Black" Foreground="#D0D0D0" Padding="0"                 Margin="5,0,0,3" />
                                <TextBlock Width="187" FontSize="11" HorizontalAlignment="Left"
                                Text="{Binding XPath=summary}" Background="Black" Foreground="Gray" 
                                Margin="5,0,0,5" />
                          </StackPanel>
                    </TextBlock>
              </StackPanel>
         </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Мой вопрос - как обновить цель или обновить / перезагрузить окно в этом случае.

Спасибо за ваш вклад.

1 Ответ

0 голосов
/ 27 марта 2011

В ListBox2 вы привязываетесь к определенному элементу (listBox1.SelectedItem), поэтому IsSynchronizedWithCurrentItem должен иметь значение false.IsSynchronizedWithCurrentItem предназначен для случаев, когда вы привязываетесь к коллекции, но хотите только выбранный элемент.

...