所以,我爲每個控件和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