Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定ViewModel属性在DataGrid中,DataGrid位于UserControl内部,UserControl位于另一个UserControl内部_C#_Wpf_Mvvm_Data Binding_Datagrid - Fatal编程技术网

C# 绑定ViewModel属性在DataGrid中,DataGrid位于UserControl内部,UserControl位于另一个UserControl内部

C# 绑定ViewModel属性在DataGrid中,DataGrid位于UserControl内部,UserControl位于另一个UserControl内部,c#,wpf,mvvm,data-binding,datagrid,C#,Wpf,Mvvm,Data Binding,Datagrid,我有一个Datagrid,它存在于用户控件中,另一个用户控件中。该视图只有一个视图模型,任何用户控件都没有单独的视图模型。ViewModel是使用prism连接的:ViewModelLocator.AutoWireViewModel=“True” <DataTemplate x:Key="HoverDeleteColumnTemplate"> <Button AutomationProperties.Name="Histo

我有一个Datagrid,它存在于用户控件中,另一个用户控件中。该视图只有一个视图模型,任何用户控件都没有单独的视图模型。ViewModel是使用prism连接的:
ViewModelLocator.AutoWireViewModel=“True”

            <DataTemplate x:Key="HoverDeleteColumnTemplate">
                <Button AutomationProperties.Name="HistorySummary.DiagnosticHistoryDeleteButton" 
                        Content="{StaticResource actionIconDelete}"
                        Click="DeleteButton_Click"
                        Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDeleteCommand}" 
                        CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDeleteCommandParameter}">
                    <Button.Style>
                        <Style BasedOn="{StaticResource HiddenActionButtonIcon}" TargetType="Button">
                            <Setter Property="Button.Visibility" Value="Hidden"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Button.Visibility" Value="Visible"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>
            <Style x:Key="HoverColumnStyle">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                        <Setter Property="DataGridRow.Background" Value="{StaticResource Glacier}"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
            <DataTemplate x:Key="HoverAddHpiColumnTemplate">
                <Button Content="Add to HPI"
                        Width="86"
                        Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddToHpiCommand}"
                        CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddToHpiCommandParameter}">
                    <Button.Style>
                        <Style BasedOn="{StaticResource HiddenActionButton}" TargetType="Button">
                            <Setter Property="Button.Visibility" Value="Hidden"/>
                            <Setter Property="IsEnabled" Value="True"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Button.Visibility" Value="Visible"/>
                                </DataTrigger>
                                <MultiDataTrigger>
                                    <MultiDataTrigger.Conditions>
                                        <Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor,AncestorLevel=3, AncestorType={x:Type Grid}}, Path=IsEncounterLocked}" Value="True"/>
                                        <Condition Binding="{Binding Path=Obsvalue}" Value="{x:Null}"/>
                                        <Condition Binding="{Binding Path=Obsinterpretation}" Value="{x:Null}"/>
                                    </MultiDataTrigger.Conditions>
                                    <Setter Property="IsEnabled" Value="False"/>
                                    <Setter Property="ToolTip" Value="Add to HPI button is only enabled if the selected study has either an Interpretation or Result documented."/>
                                    <Setter Property="ToolTipService.ShowOnDisabled" Value="True"/>
                                </MultiDataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>

        </ResourceDictionary>
    </UserControl.Resources>
    <Grid Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0"
                     Margin="0,0,0,16"
                     Orientation="Horizontal">
            <Button x:Name="AddDiagnosticHistoryButton"
                     AutomationProperties.Name="HistorySummary.AddDiagnosticHistoryButton"
                     Style="{StaticResource StandardActionButtonPrimary}"
                     Width="Auto"
                     Margin="0,0,5,0"
                     HorizontalAlignment="Left"
                     Content="Add Diagnostic"
                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddCommand}"
                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddCommandParameter}"/>
            <Button  x:Name="ViewAllOrdersButton"
                     AutomationProperties.Name="HistorySummary.ViewAllOrdersButton"
                     Style="{StaticResource StandardActionButtonSecondary}"
                     Width="Auto"
                     Margin="5,0"
                     HorizontalAlignment="Left"
                     Content="View All Orders"
                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryViewAllOrdersCommand}"
                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryViewAllOrdersCommandParameter}"/>
        </StackPanel>

        <Grid Grid.Row="1"
              Height="Auto"
              Margin="0,8,0,16">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <Grid HorizontalAlignment="Left">
                <Border BorderThickness="1"
                        BorderBrush="#92AEC4"
                        Background="White"
                        CornerRadius="3"
                        Height="20">
                    <Border.Effect>
                        <DropShadowEffect BlurRadius="2" Color="Black" ShadowDepth="2" Opacity="0.16"/>
                    </Border.Effect>
                </Border>
                <Border BorderThickness="1"
                        BorderBrush="#92AEC4"
                        CornerRadius="3"
                        Background="White"
                        Height="20">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition />
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <RadioButton GroupName="DiagnosticSummaryToggle"
                                     Name="DiagnosticDisplayAll"
                                     AutomationProperties.Name="HistorySummary.DiagnosticDisplayAllButton"
                                     IsChecked="True"
                                     Grid.Column="0"
                                     Padding="16,6"
                                     Style="{StaticResource ButtonSetText}"
                                     Content="Display All"
                                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDisplayAllCommand}"
                                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDisplayAllCommandParameter}"/>
                        <Line Grid.Column="1" 
                              StrokeThickness="2" 
                              Stroke="#92AEC4"
                              X1="0"
                              Y1="0"
                              X2="0"
                              Y2="20"/>
                        <RadioButton Style="{StaticResource ButtonSetText}"
                                     GroupName="DiagnosticSummaryToggle"
                                     Name="DiagnosticSpecialtyOnly"
                                     AutomationProperties.Name="HistorySummary.DiagnosticSpecialtyOnly"
                                     Grid.Column="2"
                                     Padding="16,6"
                                     IsChecked="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDermatologyOnly, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}"
                                     Content="Dermatology Only" />
                    </Grid>
                </Border>
            </Grid>

            <TextBlock Grid.Column="2"
                       Margin="0,0,6,0"
                       Style="{StaticResource BodyCopy3}"
                       Text="Resulted/Completed Orders"/>
        </Grid>

        <StackPanel Grid.Row="2">
            <DataGrid Name="DiagnosticHistoryGrid"
                      AutomationProperties.Name="HistorySummary.DiagnosticHistoryGrid"
                      Grid.Row="2"
                      ItemsSource="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryItemSource}"
                      SelectedItem="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistorySelectedItem}"
                      SelectionChanged="DiagnosticHistory_SelectionChanged"
                      Width="{Binding RelativeSource={RelativeSource AncestorType=StackPanel}, Path=ActualWidth}"
                      ColumnWidth="*">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Path=Acttextdisplay}" 
                                        Header="Order"
                                        SortDirection="Ascending">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTextColumn Binding="{Binding Path=Completeddate, Converter={StaticResource DateFormatConverter}}" 
                                        Header="Completed" 
                                        Width="Auto"/>
                    <DataGridTemplateColumn Header="Interpretation">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock>
                                <TextBlock Name="InterpretationText" 
                                           Text="{Binding Path=Obsinterpretation, Converter={StaticResource KbmCapitalizeFirstLetterConverter}}" 
                                           TextWrapping="Wrap"/>
                                <ui:WarningSmall x:Name="WarningImage" 
                                                 Visibility="Collapsed"/>
                            </TextBlock>
                                <DataTemplate.Triggers>
                                    <DataTrigger Binding="{Binding Path=Obsinterpretation}" Value="abnormal">
                                        <Setter TargetName="InterpretationText" Property="FontWeight" Value="Bold"/>
                                        <Setter TargetName="WarningImage" Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </DataTemplate.Triggers>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTextColumn Header="Result"                                    
                                        Binding="{Binding Path=Obsvalue}">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTemplateColumn Header="{x:Null}"
                                            Width="102"
                                            CellTemplate="{StaticResource HoverAddHpiColumnTemplate}"
                                            CellStyle="{StaticResource HoverColumnStyle}"/>
                    <DataGridTemplateColumn Header="{x:Null}"
                                            Width="40"
                                            CellTemplate="{StaticResource HoverDeleteColumnTemplate}"
                                            CellStyle="{StaticResource HoverColumnStyle}"/>
                </DataGrid.Columns>
            </DataGrid>
            <StackPanel.Style>
                <Style TargetType="StackPanel">
                    <Setter Property="Visibility" Value="Visible" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="0">
                            <Setter Property="Visibility" Value="Collapsed" />
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="1"/>
                                <Condition Binding="{Binding Path=Mng_Diag_Study_Ord_History_.IsDeleted}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Collapsed"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </StackPanel.Style>
        </StackPanel>

        <Popup Style="{StaticResource GrowlDeletePopup}"
               PlacementTarget="{Binding ElementName=DiagnosticHistoryUserControl}">
            <ui:Growl x:Name="GrowlUserControl" 
                      Style="{StaticResource GrowlDeleteHistories}"
                      UndoCommand="{Binding ElementName=DiagnosticHistoryUserControl, Path=UndoCommand, Mode=TwoWay}"
                      UndoCommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=UndoCommandParameter, Mode=TwoWay}"/>
        </Popup>

        <TextBlock AutomationProperties.Name="HistorySummary.NoDiagnosticHistoryRecordsFound"
                   Height="18"
                   Grid.Row="2"
                   VerticalAlignment="Center"
                   Text="No Diagnostic History records found.">
            <TextBlock.Style>
                <Style BasedOn="{StaticResource BodyCopy3}" TargetType="TextBlock">
                    <Setter Property="Visibility" Value="Collapsed" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="0">
                            <Setter Property="Visibility" Value="Visible" />
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="1"/>
                                <Condition Binding="{Binding Path=Mng_Diag_Study_Ord_History_.IsDeleted}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Visible"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>

        <Rectangle Style="{StaticResource SeparatorLine}"
                   Grid.Row="3"
                   Margin="0,16"/>

        <history:HistoryReview Grid.Row="4"
                               DocumentDetail="{Binding Histories_.Docgen, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               UnobtainedReason="{Binding Histories_.Hx_Unobtain_Reason, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               Title="History Review for Diagnostic History"/>

    </Grid>
</UserControl>
我面临的问题是,我想将一个VM属性绑定到具有按钮的数据网格列。我想基于ViewModel属性设置按钮的IsEnabled属性

            <DataTemplate x:Key="HoverDeleteColumnTemplate">
                <Button AutomationProperties.Name="HistorySummary.DiagnosticHistoryDeleteButton" 
                        Content="{StaticResource actionIconDelete}"
                        Click="DeleteButton_Click"
                        Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDeleteCommand}" 
                        CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDeleteCommandParameter}">
                    <Button.Style>
                        <Style BasedOn="{StaticResource HiddenActionButtonIcon}" TargetType="Button">
                            <Setter Property="Button.Visibility" Value="Hidden"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Button.Visibility" Value="Visible"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>
            <Style x:Key="HoverColumnStyle">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                        <Setter Property="DataGridRow.Background" Value="{StaticResource Glacier}"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
            <DataTemplate x:Key="HoverAddHpiColumnTemplate">
                <Button Content="Add to HPI"
                        Width="86"
                        Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddToHpiCommand}"
                        CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddToHpiCommandParameter}">
                    <Button.Style>
                        <Style BasedOn="{StaticResource HiddenActionButton}" TargetType="Button">
                            <Setter Property="Button.Visibility" Value="Hidden"/>
                            <Setter Property="IsEnabled" Value="True"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Button.Visibility" Value="Visible"/>
                                </DataTrigger>
                                <MultiDataTrigger>
                                    <MultiDataTrigger.Conditions>
                                        <Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor,AncestorLevel=3, AncestorType={x:Type Grid}}, Path=IsEncounterLocked}" Value="True"/>
                                        <Condition Binding="{Binding Path=Obsvalue}" Value="{x:Null}"/>
                                        <Condition Binding="{Binding Path=Obsinterpretation}" Value="{x:Null}"/>
                                    </MultiDataTrigger.Conditions>
                                    <Setter Property="IsEnabled" Value="False"/>
                                    <Setter Property="ToolTip" Value="Add to HPI button is only enabled if the selected study has either an Interpretation or Result documented."/>
                                    <Setter Property="ToolTipService.ShowOnDisabled" Value="True"/>
                                </MultiDataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>

        </ResourceDictionary>
    </UserControl.Resources>
    <Grid Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0"
                     Margin="0,0,0,16"
                     Orientation="Horizontal">
            <Button x:Name="AddDiagnosticHistoryButton"
                     AutomationProperties.Name="HistorySummary.AddDiagnosticHistoryButton"
                     Style="{StaticResource StandardActionButtonPrimary}"
                     Width="Auto"
                     Margin="0,0,5,0"
                     HorizontalAlignment="Left"
                     Content="Add Diagnostic"
                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddCommand}"
                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddCommandParameter}"/>
            <Button  x:Name="ViewAllOrdersButton"
                     AutomationProperties.Name="HistorySummary.ViewAllOrdersButton"
                     Style="{StaticResource StandardActionButtonSecondary}"
                     Width="Auto"
                     Margin="5,0"
                     HorizontalAlignment="Left"
                     Content="View All Orders"
                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryViewAllOrdersCommand}"
                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryViewAllOrdersCommandParameter}"/>
        </StackPanel>

        <Grid Grid.Row="1"
              Height="Auto"
              Margin="0,8,0,16">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <Grid HorizontalAlignment="Left">
                <Border BorderThickness="1"
                        BorderBrush="#92AEC4"
                        Background="White"
                        CornerRadius="3"
                        Height="20">
                    <Border.Effect>
                        <DropShadowEffect BlurRadius="2" Color="Black" ShadowDepth="2" Opacity="0.16"/>
                    </Border.Effect>
                </Border>
                <Border BorderThickness="1"
                        BorderBrush="#92AEC4"
                        CornerRadius="3"
                        Background="White"
                        Height="20">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition />
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <RadioButton GroupName="DiagnosticSummaryToggle"
                                     Name="DiagnosticDisplayAll"
                                     AutomationProperties.Name="HistorySummary.DiagnosticDisplayAllButton"
                                     IsChecked="True"
                                     Grid.Column="0"
                                     Padding="16,6"
                                     Style="{StaticResource ButtonSetText}"
                                     Content="Display All"
                                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDisplayAllCommand}"
                                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDisplayAllCommandParameter}"/>
                        <Line Grid.Column="1" 
                              StrokeThickness="2" 
                              Stroke="#92AEC4"
                              X1="0"
                              Y1="0"
                              X2="0"
                              Y2="20"/>
                        <RadioButton Style="{StaticResource ButtonSetText}"
                                     GroupName="DiagnosticSummaryToggle"
                                     Name="DiagnosticSpecialtyOnly"
                                     AutomationProperties.Name="HistorySummary.DiagnosticSpecialtyOnly"
                                     Grid.Column="2"
                                     Padding="16,6"
                                     IsChecked="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDermatologyOnly, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}"
                                     Content="Dermatology Only" />
                    </Grid>
                </Border>
            </Grid>

            <TextBlock Grid.Column="2"
                       Margin="0,0,6,0"
                       Style="{StaticResource BodyCopy3}"
                       Text="Resulted/Completed Orders"/>
        </Grid>

        <StackPanel Grid.Row="2">
            <DataGrid Name="DiagnosticHistoryGrid"
                      AutomationProperties.Name="HistorySummary.DiagnosticHistoryGrid"
                      Grid.Row="2"
                      ItemsSource="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryItemSource}"
                      SelectedItem="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistorySelectedItem}"
                      SelectionChanged="DiagnosticHistory_SelectionChanged"
                      Width="{Binding RelativeSource={RelativeSource AncestorType=StackPanel}, Path=ActualWidth}"
                      ColumnWidth="*">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Path=Acttextdisplay}" 
                                        Header="Order"
                                        SortDirection="Ascending">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTextColumn Binding="{Binding Path=Completeddate, Converter={StaticResource DateFormatConverter}}" 
                                        Header="Completed" 
                                        Width="Auto"/>
                    <DataGridTemplateColumn Header="Interpretation">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock>
                                <TextBlock Name="InterpretationText" 
                                           Text="{Binding Path=Obsinterpretation, Converter={StaticResource KbmCapitalizeFirstLetterConverter}}" 
                                           TextWrapping="Wrap"/>
                                <ui:WarningSmall x:Name="WarningImage" 
                                                 Visibility="Collapsed"/>
                            </TextBlock>
                                <DataTemplate.Triggers>
                                    <DataTrigger Binding="{Binding Path=Obsinterpretation}" Value="abnormal">
                                        <Setter TargetName="InterpretationText" Property="FontWeight" Value="Bold"/>
                                        <Setter TargetName="WarningImage" Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </DataTemplate.Triggers>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTextColumn Header="Result"                                    
                                        Binding="{Binding Path=Obsvalue}">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTemplateColumn Header="{x:Null}"
                                            Width="102"
                                            CellTemplate="{StaticResource HoverAddHpiColumnTemplate}"
                                            CellStyle="{StaticResource HoverColumnStyle}"/>
                    <DataGridTemplateColumn Header="{x:Null}"
                                            Width="40"
                                            CellTemplate="{StaticResource HoverDeleteColumnTemplate}"
                                            CellStyle="{StaticResource HoverColumnStyle}"/>
                </DataGrid.Columns>
            </DataGrid>
            <StackPanel.Style>
                <Style TargetType="StackPanel">
                    <Setter Property="Visibility" Value="Visible" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="0">
                            <Setter Property="Visibility" Value="Collapsed" />
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="1"/>
                                <Condition Binding="{Binding Path=Mng_Diag_Study_Ord_History_.IsDeleted}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Collapsed"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </StackPanel.Style>
        </StackPanel>

        <Popup Style="{StaticResource GrowlDeletePopup}"
               PlacementTarget="{Binding ElementName=DiagnosticHistoryUserControl}">
            <ui:Growl x:Name="GrowlUserControl" 
                      Style="{StaticResource GrowlDeleteHistories}"
                      UndoCommand="{Binding ElementName=DiagnosticHistoryUserControl, Path=UndoCommand, Mode=TwoWay}"
                      UndoCommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=UndoCommandParameter, Mode=TwoWay}"/>
        </Popup>

        <TextBlock AutomationProperties.Name="HistorySummary.NoDiagnosticHistoryRecordsFound"
                   Height="18"
                   Grid.Row="2"
                   VerticalAlignment="Center"
                   Text="No Diagnostic History records found.">
            <TextBlock.Style>
                <Style BasedOn="{StaticResource BodyCopy3}" TargetType="TextBlock">
                    <Setter Property="Visibility" Value="Collapsed" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="0">
                            <Setter Property="Visibility" Value="Visible" />
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="1"/>
                                <Condition Binding="{Binding Path=Mng_Diag_Study_Ord_History_.IsDeleted}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Visible"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>

        <Rectangle Style="{StaticResource SeparatorLine}"
                   Grid.Row="3"
                   Margin="0,16"/>

        <history:HistoryReview Grid.Row="4"
                               DocumentDetail="{Binding Histories_.Docgen, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               UnobtainedReason="{Binding Histories_.Hx_Unobtain_Reason, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               Title="History Review for Diagnostic History"/>

    </Grid>
</UserControl>
这是我在按钮样式中使用的。 DataTrigger我写了以下内容:

Binding="{Binding RelativeSource={RelativeSource FindAncestor,AncestorLevel=3, AncestorType={x:Type Grid}}, Path=IsEncounterLocked}" Value="True"
Binding="{Binding RelativeSource={RelativeSource FindAncestor,AncestorLevel=3, AncestorType={x:Type Grid}}, Path=IsEncounterLocked}" Value="True"
            <DataTemplate x:Key="HoverDeleteColumnTemplate">
                <Button AutomationProperties.Name="HistorySummary.DiagnosticHistoryDeleteButton" 
                        Content="{StaticResource actionIconDelete}"
                        Click="DeleteButton_Click"
                        Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDeleteCommand}" 
                        CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDeleteCommandParameter}">
                    <Button.Style>
                        <Style BasedOn="{StaticResource HiddenActionButtonIcon}" TargetType="Button">
                            <Setter Property="Button.Visibility" Value="Hidden"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Button.Visibility" Value="Visible"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>
            <Style x:Key="HoverColumnStyle">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                        <Setter Property="DataGridRow.Background" Value="{StaticResource Glacier}"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
            <DataTemplate x:Key="HoverAddHpiColumnTemplate">
                <Button Content="Add to HPI"
                        Width="86"
                        Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddToHpiCommand}"
                        CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddToHpiCommandParameter}">
                    <Button.Style>
                        <Style BasedOn="{StaticResource HiddenActionButton}" TargetType="Button">
                            <Setter Property="Button.Visibility" Value="Hidden"/>
                            <Setter Property="IsEnabled" Value="True"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Button.Visibility" Value="Visible"/>
                                </DataTrigger>
                                <MultiDataTrigger>
                                    <MultiDataTrigger.Conditions>
                                        <Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor,AncestorLevel=3, AncestorType={x:Type Grid}}, Path=IsEncounterLocked}" Value="True"/>
                                        <Condition Binding="{Binding Path=Obsvalue}" Value="{x:Null}"/>
                                        <Condition Binding="{Binding Path=Obsinterpretation}" Value="{x:Null}"/>
                                    </MultiDataTrigger.Conditions>
                                    <Setter Property="IsEnabled" Value="False"/>
                                    <Setter Property="ToolTip" Value="Add to HPI button is only enabled if the selected study has either an Interpretation or Result documented."/>
                                    <Setter Property="ToolTipService.ShowOnDisabled" Value="True"/>
                                </MultiDataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>

        </ResourceDictionary>
    </UserControl.Resources>
    <Grid Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0"
                     Margin="0,0,0,16"
                     Orientation="Horizontal">
            <Button x:Name="AddDiagnosticHistoryButton"
                     AutomationProperties.Name="HistorySummary.AddDiagnosticHistoryButton"
                     Style="{StaticResource StandardActionButtonPrimary}"
                     Width="Auto"
                     Margin="0,0,5,0"
                     HorizontalAlignment="Left"
                     Content="Add Diagnostic"
                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddCommand}"
                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddCommandParameter}"/>
            <Button  x:Name="ViewAllOrdersButton"
                     AutomationProperties.Name="HistorySummary.ViewAllOrdersButton"
                     Style="{StaticResource StandardActionButtonSecondary}"
                     Width="Auto"
                     Margin="5,0"
                     HorizontalAlignment="Left"
                     Content="View All Orders"
                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryViewAllOrdersCommand}"
                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryViewAllOrdersCommandParameter}"/>
        </StackPanel>

        <Grid Grid.Row="1"
              Height="Auto"
              Margin="0,8,0,16">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <Grid HorizontalAlignment="Left">
                <Border BorderThickness="1"
                        BorderBrush="#92AEC4"
                        Background="White"
                        CornerRadius="3"
                        Height="20">
                    <Border.Effect>
                        <DropShadowEffect BlurRadius="2" Color="Black" ShadowDepth="2" Opacity="0.16"/>
                    </Border.Effect>
                </Border>
                <Border BorderThickness="1"
                        BorderBrush="#92AEC4"
                        CornerRadius="3"
                        Background="White"
                        Height="20">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition />
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <RadioButton GroupName="DiagnosticSummaryToggle"
                                     Name="DiagnosticDisplayAll"
                                     AutomationProperties.Name="HistorySummary.DiagnosticDisplayAllButton"
                                     IsChecked="True"
                                     Grid.Column="0"
                                     Padding="16,6"
                                     Style="{StaticResource ButtonSetText}"
                                     Content="Display All"
                                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDisplayAllCommand}"
                                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDisplayAllCommandParameter}"/>
                        <Line Grid.Column="1" 
                              StrokeThickness="2" 
                              Stroke="#92AEC4"
                              X1="0"
                              Y1="0"
                              X2="0"
                              Y2="20"/>
                        <RadioButton Style="{StaticResource ButtonSetText}"
                                     GroupName="DiagnosticSummaryToggle"
                                     Name="DiagnosticSpecialtyOnly"
                                     AutomationProperties.Name="HistorySummary.DiagnosticSpecialtyOnly"
                                     Grid.Column="2"
                                     Padding="16,6"
                                     IsChecked="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDermatologyOnly, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}"
                                     Content="Dermatology Only" />
                    </Grid>
                </Border>
            </Grid>

            <TextBlock Grid.Column="2"
                       Margin="0,0,6,0"
                       Style="{StaticResource BodyCopy3}"
                       Text="Resulted/Completed Orders"/>
        </Grid>

        <StackPanel Grid.Row="2">
            <DataGrid Name="DiagnosticHistoryGrid"
                      AutomationProperties.Name="HistorySummary.DiagnosticHistoryGrid"
                      Grid.Row="2"
                      ItemsSource="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryItemSource}"
                      SelectedItem="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistorySelectedItem}"
                      SelectionChanged="DiagnosticHistory_SelectionChanged"
                      Width="{Binding RelativeSource={RelativeSource AncestorType=StackPanel}, Path=ActualWidth}"
                      ColumnWidth="*">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Path=Acttextdisplay}" 
                                        Header="Order"
                                        SortDirection="Ascending">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTextColumn Binding="{Binding Path=Completeddate, Converter={StaticResource DateFormatConverter}}" 
                                        Header="Completed" 
                                        Width="Auto"/>
                    <DataGridTemplateColumn Header="Interpretation">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock>
                                <TextBlock Name="InterpretationText" 
                                           Text="{Binding Path=Obsinterpretation, Converter={StaticResource KbmCapitalizeFirstLetterConverter}}" 
                                           TextWrapping="Wrap"/>
                                <ui:WarningSmall x:Name="WarningImage" 
                                                 Visibility="Collapsed"/>
                            </TextBlock>
                                <DataTemplate.Triggers>
                                    <DataTrigger Binding="{Binding Path=Obsinterpretation}" Value="abnormal">
                                        <Setter TargetName="InterpretationText" Property="FontWeight" Value="Bold"/>
                                        <Setter TargetName="WarningImage" Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </DataTemplate.Triggers>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTextColumn Header="Result"                                    
                                        Binding="{Binding Path=Obsvalue}">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTemplateColumn Header="{x:Null}"
                                            Width="102"
                                            CellTemplate="{StaticResource HoverAddHpiColumnTemplate}"
                                            CellStyle="{StaticResource HoverColumnStyle}"/>
                    <DataGridTemplateColumn Header="{x:Null}"
                                            Width="40"
                                            CellTemplate="{StaticResource HoverDeleteColumnTemplate}"
                                            CellStyle="{StaticResource HoverColumnStyle}"/>
                </DataGrid.Columns>
            </DataGrid>
            <StackPanel.Style>
                <Style TargetType="StackPanel">
                    <Setter Property="Visibility" Value="Visible" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="0">
                            <Setter Property="Visibility" Value="Collapsed" />
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="1"/>
                                <Condition Binding="{Binding Path=Mng_Diag_Study_Ord_History_.IsDeleted}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Collapsed"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </StackPanel.Style>
        </StackPanel>

        <Popup Style="{StaticResource GrowlDeletePopup}"
               PlacementTarget="{Binding ElementName=DiagnosticHistoryUserControl}">
            <ui:Growl x:Name="GrowlUserControl" 
                      Style="{StaticResource GrowlDeleteHistories}"
                      UndoCommand="{Binding ElementName=DiagnosticHistoryUserControl, Path=UndoCommand, Mode=TwoWay}"
                      UndoCommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=UndoCommandParameter, Mode=TwoWay}"/>
        </Popup>

        <TextBlock AutomationProperties.Name="HistorySummary.NoDiagnosticHistoryRecordsFound"
                   Height="18"
                   Grid.Row="2"
                   VerticalAlignment="Center"
                   Text="No Diagnostic History records found.">
            <TextBlock.Style>
                <Style BasedOn="{StaticResource BodyCopy3}" TargetType="TextBlock">
                    <Setter Property="Visibility" Value="Collapsed" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="0">
                            <Setter Property="Visibility" Value="Visible" />
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="1"/>
                                <Condition Binding="{Binding Path=Mng_Diag_Study_Ord_History_.IsDeleted}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Visible"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>

        <Rectangle Style="{StaticResource SeparatorLine}"
                   Grid.Row="3"
                   Margin="0,16"/>

        <history:HistoryReview Grid.Row="4"
                               DocumentDetail="{Binding Histories_.Docgen, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               UnobtainedReason="{Binding Histories_.Hx_Unobtain_Reason, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               Title="History Review for Diagnostic History"/>

    </Grid>
</UserControl>
这是我在按钮样式中使用的。 DataTrigger我写了以下内容:

Binding="{Binding RelativeSource={RelativeSource FindAncestor,AncestorLevel=3, AncestorType={x:Type Grid}}, Path=IsEncounterLocked}" Value="True"
Binding="{Binding RelativeSource={RelativeSource FindAncestor,AncestorLevel=3, AncestorType={x:Type Grid}}, Path=IsEncounterLocked}" Value="True"
            <DataTemplate x:Key="HoverDeleteColumnTemplate">
                <Button AutomationProperties.Name="HistorySummary.DiagnosticHistoryDeleteButton" 
                        Content="{StaticResource actionIconDelete}"
                        Click="DeleteButton_Click"
                        Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDeleteCommand}" 
                        CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDeleteCommandParameter}">
                    <Button.Style>
                        <Style BasedOn="{StaticResource HiddenActionButtonIcon}" TargetType="Button">
                            <Setter Property="Button.Visibility" Value="Hidden"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Button.Visibility" Value="Visible"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>
            <Style x:Key="HoverColumnStyle">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                        <Setter Property="DataGridRow.Background" Value="{StaticResource Glacier}"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
            <DataTemplate x:Key="HoverAddHpiColumnTemplate">
                <Button Content="Add to HPI"
                        Width="86"
                        Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddToHpiCommand}"
                        CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddToHpiCommandParameter}">
                    <Button.Style>
                        <Style BasedOn="{StaticResource HiddenActionButton}" TargetType="Button">
                            <Setter Property="Button.Visibility" Value="Hidden"/>
                            <Setter Property="IsEnabled" Value="True"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Button.Visibility" Value="Visible"/>
                                </DataTrigger>
                                <MultiDataTrigger>
                                    <MultiDataTrigger.Conditions>
                                        <Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor,AncestorLevel=3, AncestorType={x:Type Grid}}, Path=IsEncounterLocked}" Value="True"/>
                                        <Condition Binding="{Binding Path=Obsvalue}" Value="{x:Null}"/>
                                        <Condition Binding="{Binding Path=Obsinterpretation}" Value="{x:Null}"/>
                                    </MultiDataTrigger.Conditions>
                                    <Setter Property="IsEnabled" Value="False"/>
                                    <Setter Property="ToolTip" Value="Add to HPI button is only enabled if the selected study has either an Interpretation or Result documented."/>
                                    <Setter Property="ToolTipService.ShowOnDisabled" Value="True"/>
                                </MultiDataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>

        </ResourceDictionary>
    </UserControl.Resources>
    <Grid Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0"
                     Margin="0,0,0,16"
                     Orientation="Horizontal">
            <Button x:Name="AddDiagnosticHistoryButton"
                     AutomationProperties.Name="HistorySummary.AddDiagnosticHistoryButton"
                     Style="{StaticResource StandardActionButtonPrimary}"
                     Width="Auto"
                     Margin="0,0,5,0"
                     HorizontalAlignment="Left"
                     Content="Add Diagnostic"
                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddCommand}"
                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddCommandParameter}"/>
            <Button  x:Name="ViewAllOrdersButton"
                     AutomationProperties.Name="HistorySummary.ViewAllOrdersButton"
                     Style="{StaticResource StandardActionButtonSecondary}"
                     Width="Auto"
                     Margin="5,0"
                     HorizontalAlignment="Left"
                     Content="View All Orders"
                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryViewAllOrdersCommand}"
                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryViewAllOrdersCommandParameter}"/>
        </StackPanel>

        <Grid Grid.Row="1"
              Height="Auto"
              Margin="0,8,0,16">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <Grid HorizontalAlignment="Left">
                <Border BorderThickness="1"
                        BorderBrush="#92AEC4"
                        Background="White"
                        CornerRadius="3"
                        Height="20">
                    <Border.Effect>
                        <DropShadowEffect BlurRadius="2" Color="Black" ShadowDepth="2" Opacity="0.16"/>
                    </Border.Effect>
                </Border>
                <Border BorderThickness="1"
                        BorderBrush="#92AEC4"
                        CornerRadius="3"
                        Background="White"
                        Height="20">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition />
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <RadioButton GroupName="DiagnosticSummaryToggle"
                                     Name="DiagnosticDisplayAll"
                                     AutomationProperties.Name="HistorySummary.DiagnosticDisplayAllButton"
                                     IsChecked="True"
                                     Grid.Column="0"
                                     Padding="16,6"
                                     Style="{StaticResource ButtonSetText}"
                                     Content="Display All"
                                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDisplayAllCommand}"
                                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDisplayAllCommandParameter}"/>
                        <Line Grid.Column="1" 
                              StrokeThickness="2" 
                              Stroke="#92AEC4"
                              X1="0"
                              Y1="0"
                              X2="0"
                              Y2="20"/>
                        <RadioButton Style="{StaticResource ButtonSetText}"
                                     GroupName="DiagnosticSummaryToggle"
                                     Name="DiagnosticSpecialtyOnly"
                                     AutomationProperties.Name="HistorySummary.DiagnosticSpecialtyOnly"
                                     Grid.Column="2"
                                     Padding="16,6"
                                     IsChecked="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDermatologyOnly, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}"
                                     Content="Dermatology Only" />
                    </Grid>
                </Border>
            </Grid>

            <TextBlock Grid.Column="2"
                       Margin="0,0,6,0"
                       Style="{StaticResource BodyCopy3}"
                       Text="Resulted/Completed Orders"/>
        </Grid>

        <StackPanel Grid.Row="2">
            <DataGrid Name="DiagnosticHistoryGrid"
                      AutomationProperties.Name="HistorySummary.DiagnosticHistoryGrid"
                      Grid.Row="2"
                      ItemsSource="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryItemSource}"
                      SelectedItem="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistorySelectedItem}"
                      SelectionChanged="DiagnosticHistory_SelectionChanged"
                      Width="{Binding RelativeSource={RelativeSource AncestorType=StackPanel}, Path=ActualWidth}"
                      ColumnWidth="*">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Path=Acttextdisplay}" 
                                        Header="Order"
                                        SortDirection="Ascending">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTextColumn Binding="{Binding Path=Completeddate, Converter={StaticResource DateFormatConverter}}" 
                                        Header="Completed" 
                                        Width="Auto"/>
                    <DataGridTemplateColumn Header="Interpretation">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock>
                                <TextBlock Name="InterpretationText" 
                                           Text="{Binding Path=Obsinterpretation, Converter={StaticResource KbmCapitalizeFirstLetterConverter}}" 
                                           TextWrapping="Wrap"/>
                                <ui:WarningSmall x:Name="WarningImage" 
                                                 Visibility="Collapsed"/>
                            </TextBlock>
                                <DataTemplate.Triggers>
                                    <DataTrigger Binding="{Binding Path=Obsinterpretation}" Value="abnormal">
                                        <Setter TargetName="InterpretationText" Property="FontWeight" Value="Bold"/>
                                        <Setter TargetName="WarningImage" Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </DataTemplate.Triggers>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTextColumn Header="Result"                                    
                                        Binding="{Binding Path=Obsvalue}">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTemplateColumn Header="{x:Null}"
                                            Width="102"
                                            CellTemplate="{StaticResource HoverAddHpiColumnTemplate}"
                                            CellStyle="{StaticResource HoverColumnStyle}"/>
                    <DataGridTemplateColumn Header="{x:Null}"
                                            Width="40"
                                            CellTemplate="{StaticResource HoverDeleteColumnTemplate}"
                                            CellStyle="{StaticResource HoverColumnStyle}"/>
                </DataGrid.Columns>
            </DataGrid>
            <StackPanel.Style>
                <Style TargetType="StackPanel">
                    <Setter Property="Visibility" Value="Visible" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="0">
                            <Setter Property="Visibility" Value="Collapsed" />
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="1"/>
                                <Condition Binding="{Binding Path=Mng_Diag_Study_Ord_History_.IsDeleted}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Collapsed"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </StackPanel.Style>
        </StackPanel>

        <Popup Style="{StaticResource GrowlDeletePopup}"
               PlacementTarget="{Binding ElementName=DiagnosticHistoryUserControl}">
            <ui:Growl x:Name="GrowlUserControl" 
                      Style="{StaticResource GrowlDeleteHistories}"
                      UndoCommand="{Binding ElementName=DiagnosticHistoryUserControl, Path=UndoCommand, Mode=TwoWay}"
                      UndoCommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=UndoCommandParameter, Mode=TwoWay}"/>
        </Popup>

        <TextBlock AutomationProperties.Name="HistorySummary.NoDiagnosticHistoryRecordsFound"
                   Height="18"
                   Grid.Row="2"
                   VerticalAlignment="Center"
                   Text="No Diagnostic History records found.">
            <TextBlock.Style>
                <Style BasedOn="{StaticResource BodyCopy3}" TargetType="TextBlock">
                    <Setter Property="Visibility" Value="Collapsed" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="0">
                            <Setter Property="Visibility" Value="Visible" />
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="1"/>
                                <Condition Binding="{Binding Path=Mng_Diag_Study_Ord_History_.IsDeleted}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Visible"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>

        <Rectangle Style="{StaticResource SeparatorLine}"
                   Grid.Row="3"
                   Margin="0,16"/>

        <history:HistoryReview Grid.Row="4"
                               DocumentDetail="{Binding Histories_.Docgen, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               UnobtainedReason="{Binding Histories_.Hx_Unobtain_Reason, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               Title="History Review for Diagnostic History"/>

    </Grid>
</UserControl>
整体要素:

            <DataTemplate x:Key="HoverDeleteColumnTemplate">
                <Button AutomationProperties.Name="HistorySummary.DiagnosticHistoryDeleteButton" 
                        Content="{StaticResource actionIconDelete}"
                        Click="DeleteButton_Click"
                        Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDeleteCommand}" 
                        CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDeleteCommandParameter}">
                    <Button.Style>
                        <Style BasedOn="{StaticResource HiddenActionButtonIcon}" TargetType="Button">
                            <Setter Property="Button.Visibility" Value="Hidden"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Button.Visibility" Value="Visible"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>
            <Style x:Key="HoverColumnStyle">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                        <Setter Property="DataGridRow.Background" Value="{StaticResource Glacier}"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
            <DataTemplate x:Key="HoverAddHpiColumnTemplate">
                <Button Content="Add to HPI"
                        Width="86"
                        Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddToHpiCommand}"
                        CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddToHpiCommandParameter}">
                    <Button.Style>
                        <Style BasedOn="{StaticResource HiddenActionButton}" TargetType="Button">
                            <Setter Property="Button.Visibility" Value="Hidden"/>
                            <Setter Property="IsEnabled" Value="True"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Button.Visibility" Value="Visible"/>
                                </DataTrigger>
                                <MultiDataTrigger>
                                    <MultiDataTrigger.Conditions>
                                        <Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor,AncestorLevel=3, AncestorType={x:Type Grid}}, Path=IsEncounterLocked}" Value="True"/>
                                        <Condition Binding="{Binding Path=Obsvalue}" Value="{x:Null}"/>
                                        <Condition Binding="{Binding Path=Obsinterpretation}" Value="{x:Null}"/>
                                    </MultiDataTrigger.Conditions>
                                    <Setter Property="IsEnabled" Value="False"/>
                                    <Setter Property="ToolTip" Value="Add to HPI button is only enabled if the selected study has either an Interpretation or Result documented."/>
                                    <Setter Property="ToolTipService.ShowOnDisabled" Value="True"/>
                                </MultiDataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>

        </ResourceDictionary>
    </UserControl.Resources>
    <Grid Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0"
                     Margin="0,0,0,16"
                     Orientation="Horizontal">
            <Button x:Name="AddDiagnosticHistoryButton"
                     AutomationProperties.Name="HistorySummary.AddDiagnosticHistoryButton"
                     Style="{StaticResource StandardActionButtonPrimary}"
                     Width="Auto"
                     Margin="0,0,5,0"
                     HorizontalAlignment="Left"
                     Content="Add Diagnostic"
                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddCommand}"
                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddCommandParameter}"/>
            <Button  x:Name="ViewAllOrdersButton"
                     AutomationProperties.Name="HistorySummary.ViewAllOrdersButton"
                     Style="{StaticResource StandardActionButtonSecondary}"
                     Width="Auto"
                     Margin="5,0"
                     HorizontalAlignment="Left"
                     Content="View All Orders"
                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryViewAllOrdersCommand}"
                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryViewAllOrdersCommandParameter}"/>
        </StackPanel>

        <Grid Grid.Row="1"
              Height="Auto"
              Margin="0,8,0,16">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <Grid HorizontalAlignment="Left">
                <Border BorderThickness="1"
                        BorderBrush="#92AEC4"
                        Background="White"
                        CornerRadius="3"
                        Height="20">
                    <Border.Effect>
                        <DropShadowEffect BlurRadius="2" Color="Black" ShadowDepth="2" Opacity="0.16"/>
                    </Border.Effect>
                </Border>
                <Border BorderThickness="1"
                        BorderBrush="#92AEC4"
                        CornerRadius="3"
                        Background="White"
                        Height="20">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition />
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <RadioButton GroupName="DiagnosticSummaryToggle"
                                     Name="DiagnosticDisplayAll"
                                     AutomationProperties.Name="HistorySummary.DiagnosticDisplayAllButton"
                                     IsChecked="True"
                                     Grid.Column="0"
                                     Padding="16,6"
                                     Style="{StaticResource ButtonSetText}"
                                     Content="Display All"
                                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDisplayAllCommand}"
                                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDisplayAllCommandParameter}"/>
                        <Line Grid.Column="1" 
                              StrokeThickness="2" 
                              Stroke="#92AEC4"
                              X1="0"
                              Y1="0"
                              X2="0"
                              Y2="20"/>
                        <RadioButton Style="{StaticResource ButtonSetText}"
                                     GroupName="DiagnosticSummaryToggle"
                                     Name="DiagnosticSpecialtyOnly"
                                     AutomationProperties.Name="HistorySummary.DiagnosticSpecialtyOnly"
                                     Grid.Column="2"
                                     Padding="16,6"
                                     IsChecked="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDermatologyOnly, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}"
                                     Content="Dermatology Only" />
                    </Grid>
                </Border>
            </Grid>

            <TextBlock Grid.Column="2"
                       Margin="0,0,6,0"
                       Style="{StaticResource BodyCopy3}"
                       Text="Resulted/Completed Orders"/>
        </Grid>

        <StackPanel Grid.Row="2">
            <DataGrid Name="DiagnosticHistoryGrid"
                      AutomationProperties.Name="HistorySummary.DiagnosticHistoryGrid"
                      Grid.Row="2"
                      ItemsSource="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryItemSource}"
                      SelectedItem="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistorySelectedItem}"
                      SelectionChanged="DiagnosticHistory_SelectionChanged"
                      Width="{Binding RelativeSource={RelativeSource AncestorType=StackPanel}, Path=ActualWidth}"
                      ColumnWidth="*">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Path=Acttextdisplay}" 
                                        Header="Order"
                                        SortDirection="Ascending">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTextColumn Binding="{Binding Path=Completeddate, Converter={StaticResource DateFormatConverter}}" 
                                        Header="Completed" 
                                        Width="Auto"/>
                    <DataGridTemplateColumn Header="Interpretation">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock>
                                <TextBlock Name="InterpretationText" 
                                           Text="{Binding Path=Obsinterpretation, Converter={StaticResource KbmCapitalizeFirstLetterConverter}}" 
                                           TextWrapping="Wrap"/>
                                <ui:WarningSmall x:Name="WarningImage" 
                                                 Visibility="Collapsed"/>
                            </TextBlock>
                                <DataTemplate.Triggers>
                                    <DataTrigger Binding="{Binding Path=Obsinterpretation}" Value="abnormal">
                                        <Setter TargetName="InterpretationText" Property="FontWeight" Value="Bold"/>
                                        <Setter TargetName="WarningImage" Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </DataTemplate.Triggers>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTextColumn Header="Result"                                    
                                        Binding="{Binding Path=Obsvalue}">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTemplateColumn Header="{x:Null}"
                                            Width="102"
                                            CellTemplate="{StaticResource HoverAddHpiColumnTemplate}"
                                            CellStyle="{StaticResource HoverColumnStyle}"/>
                    <DataGridTemplateColumn Header="{x:Null}"
                                            Width="40"
                                            CellTemplate="{StaticResource HoverDeleteColumnTemplate}"
                                            CellStyle="{StaticResource HoverColumnStyle}"/>
                </DataGrid.Columns>
            </DataGrid>
            <StackPanel.Style>
                <Style TargetType="StackPanel">
                    <Setter Property="Visibility" Value="Visible" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="0">
                            <Setter Property="Visibility" Value="Collapsed" />
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="1"/>
                                <Condition Binding="{Binding Path=Mng_Diag_Study_Ord_History_.IsDeleted}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Collapsed"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </StackPanel.Style>
        </StackPanel>

        <Popup Style="{StaticResource GrowlDeletePopup}"
               PlacementTarget="{Binding ElementName=DiagnosticHistoryUserControl}">
            <ui:Growl x:Name="GrowlUserControl" 
                      Style="{StaticResource GrowlDeleteHistories}"
                      UndoCommand="{Binding ElementName=DiagnosticHistoryUserControl, Path=UndoCommand, Mode=TwoWay}"
                      UndoCommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=UndoCommandParameter, Mode=TwoWay}"/>
        </Popup>

        <TextBlock AutomationProperties.Name="HistorySummary.NoDiagnosticHistoryRecordsFound"
                   Height="18"
                   Grid.Row="2"
                   VerticalAlignment="Center"
                   Text="No Diagnostic History records found.">
            <TextBlock.Style>
                <Style BasedOn="{StaticResource BodyCopy3}" TargetType="TextBlock">
                    <Setter Property="Visibility" Value="Collapsed" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="0">
                            <Setter Property="Visibility" Value="Visible" />
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="1"/>
                                <Condition Binding="{Binding Path=Mng_Diag_Study_Ord_History_.IsDeleted}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Visible"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>

        <Rectangle Style="{StaticResource SeparatorLine}"
                   Grid.Row="3"
                   Margin="0,16"/>

        <history:HistoryReview Grid.Row="4"
                               DocumentDetail="{Binding Histories_.Docgen, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               UnobtainedReason="{Binding Histories_.Hx_Unobtain_Reason, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               Title="History Review for Diagnostic History"/>

    </Grid>
</UserControl>


绑定应该只是相对源,不需要设置祖先

            <DataTemplate x:Key="HoverDeleteColumnTemplate">
                <Button AutomationProperties.Name="HistorySummary.DiagnosticHistoryDeleteButton" 
                        Content="{StaticResource actionIconDelete}"
                        Click="DeleteButton_Click"
                        Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDeleteCommand}" 
                        CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDeleteCommandParameter}">
                    <Button.Style>
                        <Style BasedOn="{StaticResource HiddenActionButtonIcon}" TargetType="Button">
                            <Setter Property="Button.Visibility" Value="Hidden"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Button.Visibility" Value="Visible"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>
            <Style x:Key="HoverColumnStyle">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                        <Setter Property="DataGridRow.Background" Value="{StaticResource Glacier}"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
            <DataTemplate x:Key="HoverAddHpiColumnTemplate">
                <Button Content="Add to HPI"
                        Width="86"
                        Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddToHpiCommand}"
                        CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddToHpiCommandParameter}">
                    <Button.Style>
                        <Style BasedOn="{StaticResource HiddenActionButton}" TargetType="Button">
                            <Setter Property="Button.Visibility" Value="Hidden"/>
                            <Setter Property="IsEnabled" Value="True"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsMouseOver}" Value="True">
                                    <Setter Property="Button.Visibility" Value="Visible"/>
                                </DataTrigger>
                                <MultiDataTrigger>
                                    <MultiDataTrigger.Conditions>
                                        <Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor,AncestorLevel=3, AncestorType={x:Type Grid}}, Path=IsEncounterLocked}" Value="True"/>
                                        <Condition Binding="{Binding Path=Obsvalue}" Value="{x:Null}"/>
                                        <Condition Binding="{Binding Path=Obsinterpretation}" Value="{x:Null}"/>
                                    </MultiDataTrigger.Conditions>
                                    <Setter Property="IsEnabled" Value="False"/>
                                    <Setter Property="ToolTip" Value="Add to HPI button is only enabled if the selected study has either an Interpretation or Result documented."/>
                                    <Setter Property="ToolTipService.ShowOnDisabled" Value="True"/>
                                </MultiDataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>

        </ResourceDictionary>
    </UserControl.Resources>
    <Grid Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0"
                     Margin="0,0,0,16"
                     Orientation="Horizontal">
            <Button x:Name="AddDiagnosticHistoryButton"
                     AutomationProperties.Name="HistorySummary.AddDiagnosticHistoryButton"
                     Style="{StaticResource StandardActionButtonPrimary}"
                     Width="Auto"
                     Margin="0,0,5,0"
                     HorizontalAlignment="Left"
                     Content="Add Diagnostic"
                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddCommand}"
                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryAddCommandParameter}"/>
            <Button  x:Name="ViewAllOrdersButton"
                     AutomationProperties.Name="HistorySummary.ViewAllOrdersButton"
                     Style="{StaticResource StandardActionButtonSecondary}"
                     Width="Auto"
                     Margin="5,0"
                     HorizontalAlignment="Left"
                     Content="View All Orders"
                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryViewAllOrdersCommand}"
                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryViewAllOrdersCommandParameter}"/>
        </StackPanel>

        <Grid Grid.Row="1"
              Height="Auto"
              Margin="0,8,0,16">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <Grid HorizontalAlignment="Left">
                <Border BorderThickness="1"
                        BorderBrush="#92AEC4"
                        Background="White"
                        CornerRadius="3"
                        Height="20">
                    <Border.Effect>
                        <DropShadowEffect BlurRadius="2" Color="Black" ShadowDepth="2" Opacity="0.16"/>
                    </Border.Effect>
                </Border>
                <Border BorderThickness="1"
                        BorderBrush="#92AEC4"
                        CornerRadius="3"
                        Background="White"
                        Height="20">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition />
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <RadioButton GroupName="DiagnosticSummaryToggle"
                                     Name="DiagnosticDisplayAll"
                                     AutomationProperties.Name="HistorySummary.DiagnosticDisplayAllButton"
                                     IsChecked="True"
                                     Grid.Column="0"
                                     Padding="16,6"
                                     Style="{StaticResource ButtonSetText}"
                                     Content="Display All"
                                     Command="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDisplayAllCommand}"
                                     CommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDisplayAllCommandParameter}"/>
                        <Line Grid.Column="1" 
                              StrokeThickness="2" 
                              Stroke="#92AEC4"
                              X1="0"
                              Y1="0"
                              X2="0"
                              Y2="20"/>
                        <RadioButton Style="{StaticResource ButtonSetText}"
                                     GroupName="DiagnosticSummaryToggle"
                                     Name="DiagnosticSpecialtyOnly"
                                     AutomationProperties.Name="HistorySummary.DiagnosticSpecialtyOnly"
                                     Grid.Column="2"
                                     Padding="16,6"
                                     IsChecked="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryDermatologyOnly, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}"
                                     Content="Dermatology Only" />
                    </Grid>
                </Border>
            </Grid>

            <TextBlock Grid.Column="2"
                       Margin="0,0,6,0"
                       Style="{StaticResource BodyCopy3}"
                       Text="Resulted/Completed Orders"/>
        </Grid>

        <StackPanel Grid.Row="2">
            <DataGrid Name="DiagnosticHistoryGrid"
                      AutomationProperties.Name="HistorySummary.DiagnosticHistoryGrid"
                      Grid.Row="2"
                      ItemsSource="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistoryItemSource}"
                      SelectedItem="{Binding ElementName=DiagnosticHistoryUserControl, Path=DiagnosticHistorySelectedItem}"
                      SelectionChanged="DiagnosticHistory_SelectionChanged"
                      Width="{Binding RelativeSource={RelativeSource AncestorType=StackPanel}, Path=ActualWidth}"
                      ColumnWidth="*">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Path=Acttextdisplay}" 
                                        Header="Order"
                                        SortDirection="Ascending">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTextColumn Binding="{Binding Path=Completeddate, Converter={StaticResource DateFormatConverter}}" 
                                        Header="Completed" 
                                        Width="Auto"/>
                    <DataGridTemplateColumn Header="Interpretation">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock>
                                <TextBlock Name="InterpretationText" 
                                           Text="{Binding Path=Obsinterpretation, Converter={StaticResource KbmCapitalizeFirstLetterConverter}}" 
                                           TextWrapping="Wrap"/>
                                <ui:WarningSmall x:Name="WarningImage" 
                                                 Visibility="Collapsed"/>
                            </TextBlock>
                                <DataTemplate.Triggers>
                                    <DataTrigger Binding="{Binding Path=Obsinterpretation}" Value="abnormal">
                                        <Setter TargetName="InterpretationText" Property="FontWeight" Value="Bold"/>
                                        <Setter TargetName="WarningImage" Property="Visibility" Value="Visible"/>
                                    </DataTrigger>
                                </DataTemplate.Triggers>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTextColumn Header="Result"                                    
                                        Binding="{Binding Path=Obsvalue}">
                        <DataGridTextColumn.ElementStyle>
                            <Style>
                                <Setter Property="TextBlock.TextWrapping" Value="Wrap"/>
                            </Style>
                        </DataGridTextColumn.ElementStyle>
                    </DataGridTextColumn>
                    <DataGridTemplateColumn Header="{x:Null}"
                                            Width="102"
                                            CellTemplate="{StaticResource HoverAddHpiColumnTemplate}"
                                            CellStyle="{StaticResource HoverColumnStyle}"/>
                    <DataGridTemplateColumn Header="{x:Null}"
                                            Width="40"
                                            CellTemplate="{StaticResource HoverDeleteColumnTemplate}"
                                            CellStyle="{StaticResource HoverColumnStyle}"/>
                </DataGrid.Columns>
            </DataGrid>
            <StackPanel.Style>
                <Style TargetType="StackPanel">
                    <Setter Property="Visibility" Value="Visible" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="0">
                            <Setter Property="Visibility" Value="Collapsed" />
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="1"/>
                                <Condition Binding="{Binding Path=Mng_Diag_Study_Ord_History_.IsDeleted}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Collapsed"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </StackPanel.Style>
        </StackPanel>

        <Popup Style="{StaticResource GrowlDeletePopup}"
               PlacementTarget="{Binding ElementName=DiagnosticHistoryUserControl}">
            <ui:Growl x:Name="GrowlUserControl" 
                      Style="{StaticResource GrowlDeleteHistories}"
                      UndoCommand="{Binding ElementName=DiagnosticHistoryUserControl, Path=UndoCommand, Mode=TwoWay}"
                      UndoCommandParameter="{Binding ElementName=DiagnosticHistoryUserControl, Path=UndoCommandParameter, Mode=TwoWay}"/>
        </Popup>

        <TextBlock AutomationProperties.Name="HistorySummary.NoDiagnosticHistoryRecordsFound"
                   Height="18"
                   Grid.Row="2"
                   VerticalAlignment="Center"
                   Text="No Diagnostic History records found.">
            <TextBlock.Style>
                <Style BasedOn="{StaticResource BodyCopy3}" TargetType="TextBlock">
                    <Setter Property="Visibility" Value="Collapsed" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="0">
                            <Setter Property="Visibility" Value="Visible" />
                        </DataTrigger>
                        <MultiDataTrigger>
                            <MultiDataTrigger.Conditions>
                                <Condition Binding="{Binding ElementName=DiagnosticHistoryGrid, Path=Items.Count}" Value="1"/>
                                <Condition Binding="{Binding Path=Mng_Diag_Study_Ord_History_.IsDeleted}" Value="True"/>
                            </MultiDataTrigger.Conditions>
                            <Setter Property="Visibility" Value="Visible"/>
                        </MultiDataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>

        <Rectangle Style="{StaticResource SeparatorLine}"
                   Grid.Row="3"
                   Margin="0,16"/>

        <history:HistoryReview Grid.Row="4"
                               DocumentDetail="{Binding Histories_.Docgen, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               UnobtainedReason="{Binding Histories_.Hx_Unobtain_Reason, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
                               Title="History Review for Diagnostic History"/>

    </Grid>
</UserControl>