TextBox에 표시 할 List<string> Tags
클래스가 있습니다. 이를 위해 IValueConverter를 사용합니다.IDataErrorInfo 및 IValueConverter를 통한 오류 확인
ListToStringConverter :
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var list = value as List<string>;
var returnvalue = string.Empty;
if(list != null)
list.ForEach(item => returnvalue += item + ", ");
return returnvalue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
var strValue = value as string;
if(strValue != null)
return strValue.Split(new char[] { ',' });
return null;
}
클래스 테스트 :
public class Test : IDataErrorInfo
{
public Test()
{
Tags = new List<string>();
}
public List<string> Tags { get; set; }
string errors;
const string errorsText = "Error in Test class.";
public string Error
{
get { return errors; }
}
public string this[string propertyName]
{
get
{
errors = null;
switch (propertyName)
{
case "Tags":
if (Tags.Count <= 1)
{
errors = errorsText;
return "...more tags plz..";
}
break;
}
return null;
}
}
}
가 지금은 태그의 유효성을 검사하려면 :
<TextBox Text="{Binding Test.Tags, Converter={StaticResource ListToStringConverter}, Mode=TwoWay, ValidatesOnDataErrors=True}" />
그러나 표시 오류가 없습니다. 어쩌면 변환 때문에하지만 어떻게 여전히 유효성 검사를 수행 할 수 있습니까?
어리석은 실수가 있었다면, 객체를'CurrentItem'으로 설정하고,'EditTemplate'을 정의하고,'Objects.Property'를 사용한 Propertienames 대신에 :-( – jwillmer