2016-12-15 79 views
0

我有一個DataGridDataGridTextColumn需要一些驗證。DataGrid列驗證錯誤模板

<DataGridTextColumn Header="Key" Width="100"> 
<DataGridTextColumn.Binding> 
    <Binding Path="Key"> 
     <Binding.ValidationRules> 
      <local:DistinctValidation/> 
     </Binding.ValidationRules> 
    </Binding> 
</DataGridTextColumn.Binding> 

DataGrid本身沒有應用到它的風格,但DataGridTextColumn具有下列之一:

<Style TargetType="{x:Type DataGridTextColumn}"> 
<Setter Property="Validation.ErrorTemplate"> 
    <Setter.Value> 
     <ControlTemplate> 
      <StackPanel> 
       <AdornedElementPlaceholder x:Name="placeholder" /> 
       <Popup HorizontalAlignment="Left" PopupAnimation="Fade" Placement="Bottom" IsOpen="true"> 
        <TextBlock Text="{Binding [0].ErrorContent}"/> 
       </Popup> 
      </StackPanel> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 

爲了簡單起見,我試圖設置在彈出的IsOpen總是真正。儘管如此,彈出一直沒有出現
Popup

回答

1

你應該設置列的EditingElementStyle的Validation.ErrorTemplate屬性模板得到應用:

<DataGridTextColumn Binding="{Binding Test}"> 
    <DataGridTextColumn.EditingElementStyle> 
    <Style TargetType="TextBox"> 
     <Setter Property="Validation.ErrorTemplate"> 
      <Setter.Value> 
       <ControlTemplate> 
        <StackPanel> 
         <AdornedElementPlaceholder x:Name="placeholder" /> 
         <Popup HorizontalAlignment="Left" PopupAnimation="Fade" Placement="Bottom" IsOpen="true"> 
          <Grid Background="White"> 
           <TextBlock Text="{Binding [0].ErrorContent}"/> 
          </Grid> 
         </Popup> 
        </StackPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
    </DataGridTextColumn.EditingElementStyle> 
</DataGridTextColumn> 
+0

按預期工作!非常感謝 –