2

我有一个定义为 DataTemplate(用于“OrderEntryViewModel”)的视图,其中包含一个 3 行网格内的 Menu、ContentPresenter 和 Expander。ContentPresenter 的内容绑定到另一个视图模型“OrderViewModel”(有另一个 DataTemplate 定义的视图)。扩展器的 ZIndex 为 99,因此当它向上扩展时,它会扩展 OVER 任何其他控件(即 ContentPresenter)。

这一切都按预期工作,除了 ContentPresenter 的内容(OrderViewModel)有数据错误时......我的 OrderView 围绕具有无效数据的控件显示自定义验证错误模板。发生的情况是,当我展开扩展器时,ContentPresenter 内的所有控件都被覆盖了,但我显示的红色边框和感叹号仍然通过扩展器可见!我已经验证了我的扩展器的 ZIndex 为 99,而 ContentPresenter 的为 0。有人可以帮我解决这个问题吗?

这里有一些图像可以帮助解释:

第一张图片显示了未展开时视图的外观。

第二张图片显示了我展开时的视图。

我这样定义验证错误模板:

<ControlTemplate x:Key="ValidationErrorTemplate">
    <DockPanel LastChildFill="true">
        <Border Background="Red" DockPanel.Dock="right" Margin="5,0,0,0" Width="10" Height="10" CornerRadius="5" 
                ToolTip="{Binding AdornedElement.(Validation.Errors).CurrentItem.ErrorContent, ElementName=customAdorner}">
            <TextBlock Text="!" VerticalAlignment="center" HorizontalAlignment="center" FontWeight="Bold" Foreground="White"/>
        </Border>
        <AdornedElementPlaceholder x:Name="customAdorner" VerticalAlignment="Center">
            <Border BorderBrush="red" BorderThickness="1" />
        </AdornedElementPlaceholder>
    </DockPanel>
</ControlTemplate>

并将其分配给这样的特定控件(这就是我为我的 TextBox 做的方式):

<Style TargetType="{x:Type TextBox}" x:Key="ValidatedStyleTextBox">
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsLocked}" Value="True">
            <Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding IsLocked}" Value="False">
            <Setter Property="Validation.ErrorTemplate" Value="{StaticResource ValidationErrorTemplate}"/>
        </DataTrigger>
    </Style.Triggers>
</Style>
4

1 回答 1

3

这个解决方案对我有用......只是在与我的扩展器相同的级别添加了一个 AdornerDecorator,所以现在,AdornerDecorator 内部的控件使用该图层而不是窗口中的顶层图层来显示

于 2012-07-17T13:11:24.460 回答