Вы не можете напрямую использовать словарь в xaml для привязки со свойством Text, вы можете использовать Converter
или ваш вспомогательный метод GetOptionName()
. Если вы не хотите писать вспомогательные методы при попытке связать их со словарем, вы можете поместить их в свою модель представления вместо страницы. В этом случае вам не нужно каждый раз объявлять метод и просто вызывать ViewModel.GetOptionName()
для привязки.
Метод преобразования:
public class DictionaryConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, string language)
{
OptionsEnum result;
var aa = Enum.TryParse<OptionsEnum>(parameter.ToString(), out result);
var dictionary = value as Dictionary<OptionsEnum, string>;
return dictionary[result];
}
public object ConvertBack(object value, Type targetType,
object parameter, string language)
{
return null;
}
}
. xaml:
<Grid>
<TextBlock Text="{x:Bind ViewModel.OptionNames,Converter={StaticResource MyConverter},ConverterParameter=OptionA}"/>
</Grid>
Или Вспомогательный метод:
public class MyViewModel {
......
public string GetOptionName(OptionsEnum option) => OptionNames[option];
}
.xaml:
<TextBlock Text="{x:Bind ViewModel.GetOptionName(winrt:OptionsEnum.OptionA)}"></TextBlock>