enum
이 걸리고 URI가 울리는 IValueConverter
을 만들려고합니다. 변환기는 예상대로 런타임에 작동합니다. 그러나 XAML 디자이너는 다음과 같은 오류 메시지를 표시합니다.IValueConverters 및 MockData
개체는 열거 형과 동일해야합니다. 전달 된 유형은 'Mocks.WarframeHelper_Model_Enumerations_15_1293735 + RelicTypes'입니다. 열거 형은 'WarframeHelper.Model.Enumerations + RelicTypes'입니다.
디자인 타임에만 필요로하는 속성이있는 더 간단한 버전의 모델이지만 사용 된 enum
은 정확히 같거나 (적어도 있어야합니다). 이 주변에 어쨌든 있나요? 여기
IValueConverter
에 대한 코드 (내가 뭔가를하고있는 중이 야 그래서 만약 내가 그냥 그 일의 요령을 얻고 잘못 정정 해줘 주시기 바랍니다)
public class NameToUriConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if(Enum.IsDefined(typeof(Enumerations.RelicTypes), value))
{
return new Uri("/Assets/RelicIcons/Relic_" + (value).ToString() + ".png", UriKind.Relative);
}
else return new Uri("/Assets/Placeholder.png", UriKind.Relative);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value as string;
}
}
이며, 여기에 사용자 정의 데이터 형식입니다 I 모의 데이터를 사용 : 런타임에 예상대로
public class Sample_RelicModel
{
public Uri ImageUri { get; set; }
public bool isVaulted { get; set; }
public Enumerations.RelicFlavors Flavor { get; set; }
public Enumerations.RelicTypes Type { get; set; }
public Enumerations.DropRearity Rearity { get; set; }
public ObservableCollection<Sample_PrimeItem_Component> DropTable { get; set; }
private int count;
public int Count
{
get { return count; }
set
{
if (value >= 0)
{
count = value;
}
else MessageBox.Show("You don't have enough relics", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
public Sample_RelicModel() { }
}
는 다시 컨버터가 작동
는 그러나 XAML 디자이너 때문에 모의 데이터를 좋아하지 않는다.
케이스가 일치합니까? 여기에 발언을보세요 https://msdn.microsoft.com/en-us/library/system.enum.isdefined(v=vs.110).aspx – Nkosi
@Nkosi 그것이 문제는 아니지만 일치하지 않습니다. 런타임 열거 형은 (열거 형 + RelicTypes)이지만 디자인 타임은 열거 형 (열거 형 _15_1293735 + RelicTypes)으로 문제의 원인이됩니다. Runtime 데이터 형식과 디자인 타임 데이터 형식 둘 다 'Project.Model 사용'(열거 형이있는 위치)이 있으므로 Visual Studio에서 해당 형식을 기반으로 자체 데이터 형식을 만들지 않는 한 동일한 형식이어야 함을 확인할 수 있습니다. 나는 –
을 만들었습니다. 변환기에 전달 된 값의 대소 문자를 묻습니다. 문제 해결을 위해서'Enum.IsDefined'에 전달하기 전에 값을 문자열로 변환하고 작동하는지 확인하십시오. 즉, 'Enum.IsDefined (typeof (Enumerations.RelicTypes), value.ToString())' – Nkosi