Silverlight Expander.Header带有额外的按钮

时间:2011-02-24 16:36:32

标签: data-binding silverlight-4.0 datatemplate

单击Expander.Header上的Complete Survey按钮时,我想导航到另一个页面并从viewmodel传递一些信息。我有扩展器工作,以便当它被选中时它会扩展,并且selecteditem属性被正确绑定和填充。但是,如果我只是单击该按钮,则selectitem不会更改,如果是第一个操作,则甚至不会填充。如果在选择扩展器之前按下按钮控件,如何触发所选项目?如果可能的话,我更喜欢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 :(得分:0)

我不熟悉您正在使用的BindingHelper类,但如果它在后台使用标准命令,那么我将命令参数绑定到“item”。

这样您就可以访问命令执行事件中的绑定项。

答案 1 :(得分:0)

使用viewmodel中的按钮视图模型集合解决了这个问题。除了ObservableCollectionVM

之外没有其他特殊魔法