Я пользуюсь этим форумом довольно долго и, наконец, обнаружил проблему, на которую раньше не было ответа, поэтому это моя первая тема здесь.
В любом случае, я создал небольшую программу для проверки менеджера валидации в Enterprise Library 5.0 и обнаружил в нем ошибку (?) При использовании его в коллекциях с DataTemplate для просмотра указанного типа.
Проблема в том, что первый объект загружается без красного квадрата (что означает, что он действителен), хотя на самом деле это не так. только немного изменив его, он получает красный квадрат (т.е. после добавления буквы или ее удаления).
Все остальные объекты в коллекции прекрасно работают во время загрузки, только первый действует иначе.
Любая подсказка?
Window.xaml.cs:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Collection = new ObservableCollection<NewClass>();
for (int i = 1; i < 6; i++)
{
Collection.Add(new NewClass()
{
ID = i,
Name = "Example" + i
});
}
this.stackPanel.DataContext = this;
this.listBox.ItemsSource = Collection;
}
public ObservableCollection<NewClass> Collection;
NewClass
public class NewClass
{
public int ID { get; set; }
public string Name { get; set; }
}
Window.xaml
<Window.Resources>
<DataTemplate DataType="{x:Type local:NewClass}">
<StackPanel Orientation="Horizontal">
<TextBox Margin="10,10,10,10" vab:Validate.BindingForProperty="Text" vab:Validate.ValidatesOnTargetUpdated="True"
Text="{Binding Name, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
</DataTemplate>
</Window.Resources>
<StackPanel Orientation="Vertical" x:Name="stackPanel">
<ListBox Margin="10,0,0,0" x:Name="listBox" />
</StackPanel>
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="validation" type="Microsoft.Practices.EnterpriseLibrary.Validation.Configuration.ValidationSettings, Microsoft.Practices.EnterpriseLibrary.Validation, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
</configSections>
<validation>
<type name="EntLibTest.NewClass" defaultRuleset="ValidationRuleset"
assemblyName="EntLibTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<ruleset name="ValidationRuleset">
<properties>
<property name="Name">
<validator type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.StringLengthValidator, Microsoft.Practices.EnterpriseLibrary.Validation, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
upperBound="3" lowerBoundType="Inclusive" negated="false" name="String Length Validator" />
</property>
</properties>
</ruleset>
</type>
</validation>
</configuration>