Эта ошибка связана с тем, что вы связываете строку с шириной, для которой требуется другой объект.
Чтобы исправить это, одним из решений будет использование Converter
, которое преобразует ваш тип (тот, который идет из ViewModel) в тип, ожидаемый для ширины сетки. Подробнее о конвертерах здесь
Конвертер, который вам нужен, будет выглядеть следующим образом:
public class IntToGridLengthConverter : IValueConverter
{
public IntToGridLengthConverter()
{
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var intValue = System.Convert.ToInt32(value);
return new GridLength(intValue, GridUnitType.Star);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Тогда в XAML вам просто нужно его использовать.
Добавление нового раздела в XAML и вызов конвертера
Затем использование конвертера в ваших привязках
Как вы можете видеть, я использую Ключ , который был установлен в предыдущей части.
Одним небольшим изменением, которое вам нужно сделать в свойствах ViewModel, является то, что теперь они должны иметь тип int
(целое число). Таким образом, в вашей ViewModel вы должны установить только целую часть значения, которое вы хотите установить, например:
firstColValue = 7;
secondColValue = 3;
Работа по преобразованию этих значений в 7*
и 3*
соответственно будет отвечать за Преобразователь .
Использование конвертеров не позволит вам использовать элементы Xamarin.Forms в ваших моделях представления, так как они должны быть независимыми. Также этот конвертер можно повторно использовать на любой другой странице, которая вам нужна.
Надеюсь, это поможет .-
Разве опрос, как предполагается, не берет массив структур? Из страницы справочника:
int poll(struct pollfd fds[], nfds_t nfds, int timeout);
И Вы передаете массив указателей на структуры:
struct pollfd **my_fds;
Я думаю, что Вы должны иметь
struct pollfd *my_fds = calloc(sizeof(pollfd), MAX_CONN);
Затем Ваш код имеет шанс работать.