#c#
#c#
Вопрос:
У меня есть этот код:
private static void IsAvailablePropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
if((bindable as ArrowGridTemplate).FR != null)
{
if ((bool)newValue)
{
(bindable as ArrowGridTemplate).Opacity = 1;
(bindable as ArrowGridTemplate).IsEnabled = true;
}
else
{
(bindable as ArrowGridTemplate).Opacity = 0.5;
(bindable as ArrowGridTemplate).IsEnabled = false;
}
}
}
Есть ли какой-то способ, которым я мог бы изменить это, чтобы почти каждая строка не требовала:
(bindable as ArrowGridTemplate)
Комментарии:
1.
if (bindable is ArrowGridTemplate temp amp;amp; temp.FR != null) ... temp.Opacity = 1; ...
Ответ №1:
Здесь можно использовать is
шаблон типа:
if(bindable is ArrowGridTemplate template amp;amp; template.FR != null)
{
if ((bool)newValue)
{
template.Opacity = 1;
template.IsEnabled = true;
}
else
{
template.Opacity = 0.5;
template.IsEnabled = false'
}
}
ArrowGridTemplate template
здесь что-то вроде «объявления переменной», так что вы можете изменить template
его на любое имя, которое захотите.
Комментарии:
1. итак, «if (bindable is ArrowGridTemplate template» также проверит его и убедится, что это ArrowGridTemplate? Как насчет того, если оно равно null, должен ли я также проверить, не является ли значение привязки null ?
2. Это гарантирует, что это
ArrowGridTemplate
. Прочитайте предоставленную мной ссылку для получения дополнительной информации. Я не думаюbindable
, что может быть null, поэтому вам не нужно это проверять. Вам нужно было бы проверить наличие нулей, если бы вы использовалиas
, потому что преобразование завершилось бы неудачей. @RichardS