所以,我为每个控件和ValidationErrorTemplate获得了一个巨大的样式模板字典。问题是,当控制器上方没有位置时,我们应该在控制下显示验证错误。基本上用于窗口顶部的控件。对于窗口底部的控件,验证应显示在控件的上方。WPF ValidationErrorTemplate风格动态位置
既然,每一个样式定义存在没有代码隐藏资源字典,也没有数据绑定是可能的。
一个想法是确定AdornedElementPlaceholder
的位置并分别隐藏/显示模板。但是我没有找到任何解决方案来做到这一点在XAML。
<ControlTemplate x:Key="ValidationErrorTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Grid.Row="1">
<Border>
<AdornedElementPlaceholder />
</Border>
</Grid>
<AdornerDecorator Grid.Row="????">
<Border >
<!-- some style comes here ... -->
</Border>
</AdornerDecorator>
</Grid>
</ControlTemplate>
Grid.Row = “????”应该为0或1,具体取决于控件的顶部。
听起来不错,但我们不希望定义明确的风格与一键每一个控制。 Specialy不是,因为我们开发了一个框架,所以不能保证他们不会忘记添加正确的样式键。 –
您是否想过使用DataTrigger来设置Grid.Row,取决于AdornedElementPlaceholder的值?我从来没有尝试过这个,但我认为它会按照你描述的方式工作。 – Killingsworth