Silverlight Expander.Header с дополнительной кнопкой - PullRequest
2 голосов
/ 24 февраля 2011

Когда нажата кнопка Complete Survey на Expander.Header, я бы хотел перейти на другую страницу и передать некоторую информацию из модели представления. У меня есть расширитель, работающий так, что при его выделении он расширяется, а свойство selecteditem правильно связывается и заполняется. Однако, если я просто нажму вправо на кнопку, выбранный элемент не изменится и даже не заполняется, если это первое действие. Как я могу активировать выбранный элемент, если кнопка управления нажата до выбора расширителя? Я бы предпочел решение MVVM, если это возможно. Спасибо

<ListBox  x:Name="SearchList"
                          Grid.Row="1"
                          Margin="5,0,5,0"
                          Grid.Column="0"
                          Background="Transparent"
                          BorderThickness="0"
                          BorderBrush="Transparent"
                          ItemsSource="{Binding Path=SearchResults}"
                          SelectedItem="{Binding Path=SelectedResult,Mode=TwoWay,Converter={StaticResource DebugConverter}}"
                          HorizontalContentAlignment="Stretch"
                          HorizontalAlignment="Stretch">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <toolkit:Expander>
                                <sb:BindingHelper.Binding>
                                    <sb:RelativeSourceBinding TargetProperty="IsExpanded"
                                                              Path="IsSelected"
                                                              RelativeMode="FindAncestor"
                                                              AncestorType="ListBoxItem" BindingMode="TwoWay" />
                                </sb:BindingHelper.Binding>
                                <toolkit:Expander.Header>
                                    <Grid Width="525">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="25" />
                                            <ColumnDefinition Width="100" />
                                        </Grid.ColumnDefinitions>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="*" />
                                        </Grid.RowDefinitions>
                                        <TextBlock Grid.Column="0"
                                                   Grid.Row="0"
                                                   Text="{Binding Path=PatientName}" />
                                        <Button Grid.Column="2"
                                                Grid.Row="0"
                                                Content="Complete Survey">
                                            <sb:BindingHelper.Binding>
                                                <sb:RelativeSourceBinding Path="OpenSurveyCommand"
                                                                          TargetProperty="Command"
                                                                          RelativeMode="ParentDataContext" />
                                            </sb:BindingHelper.Binding>
                                        </Button>
                                    </Grid>
                                </toolkit:Expander.Header>
                                <StackPanel>
                                    <TextBlock Text="{Binding MRN,Converter={StaticResource StringLabelConverter},ConverterParameter=MRN}" />
                                    <TextBlock Text="{Binding OriginalVisitNumber,Converter={StaticResource StringLabelConverter},ConverterParameter='Original Visit Number'}" />
                                    <TextBlock Text="{Binding OriginalAdmitDate,Converter={StaticResource StringLabelConverter},ConverterParameter='Original Admit Date'}" />
                                    <TextBlock Text="{Binding OriginalReason,Converter={StaticResource StringLabelConverter},ConverterParameter='Original Reason'}" />
                                    <TextBlock Text="{Binding ReAdmitVisitNumber,Converter={StaticResource StringLabelConverter},ConverterParameter='ReAdmit Visit Number'}" />
                                    <TextBlock Text="{Binding ReAdmitDate,Converter={StaticResource StringLabelConverter},ConverterParameter='Readmit Date'}" />
                                    <TextBlock Text="{Binding ReAdmitReason,Converter={StaticResource StringLabelConverter},ConverterParameter='ReAdmit Reason'}" />
                                </StackPanel>

                            </toolkit:Expander>


                        </DataTemplate>
                    </ListBox.ItemTemplate>

Ответы [ 2 ]

0 голосов
/ 27 мая 2011

Использование коллекции видовых моделей с кнопкой в ​​видовой модели решило эту проблему.Никакой особой магии, кроме ObservableCollectionVM

0 голосов
/ 14 апреля 2011

Я не знаком с классом BindingHelper, который вы используете, но если он использует стандартное командование в фоновом режиме, я бы связал параметр команды с «элементом».

Таким образом, у вас есть доступ к связанному элементу в событии выполнения команд.

...