변환 할 때이 데이터가 필요하고이 데이터가 바인딩 대상이 아닌 다른 개체에 있기 때문에 변환기 클래스에서 DependencyProperty를 정의해야합니다.IValueConverter 클래스에서 속성 정의
내 변환 클래스는 다음 다음
public class LEGOMaterialConverter : DependencyObject, IValueConverter
{
public DependencyProperty MaterialsListProperty = DependencyProperty.Register("MaterialsList", typeof(Dictionary<int, LEGOMaterial>), typeof(LEGOMaterialConverter));
public Dictionary<int, LEGOMaterial> MaterialsList
{
get
{
return (Dictionary<int, LEGOMaterial>)GetValue(MaterialsListProperty);
}
set
{
SetValue(MaterialsListProperty, value);
}
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
LEGOMaterial material = null;
MaterialsList.TryGetValue((int)value, out material);
return material;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
나는 Window.REsources 영역을 instanciating 해요 :
<Window.Resources>
<local:LEGOMaterialConverter x:Key="MaterialsConverter" MaterialsList="{Binding Path=Materials}" />
</Window.Resources>
나는 다음과 같은 오류 받고 있어요 :
'MaterialsList' property was already registered by 'LEGOMaterialConverter'.
을
누구든지이 오류에 대한 단서가 있습니까?
멀티 바인딩 및 MultiValueConverter를 사용해 보셨습니까? http://stackoverflow.com/questions/15309008/binding-converterparameter를 참조하십시오. –