Как передача по ссылке действительно работает в C #? - PullRequest
5 голосов
/ 19 февраля 2012

Мне интересно, как передача по ссылке работает в C #.Если я передам элемент управления WPF DataGrid по ссылке на функцию и медленно добавлю элементы в свою коллекцию DataGrid.Items, будет ли обновляться DataGrid в пользовательском интерфейсе при каждом новом вызове DataGrid.Items.Add ()?Или будет обновляться только когда функция вернется?Я хотел бы достичь первого сценария, поэтому, если передача по ссылке не сработает, я хотел бы получить несколько советов о том, как этого добиться.Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 19 февраля 2012

Передача по ссылке в любом случае не имеет отношения к вашей ситуации. Передача по ссылке (т. Е. ref) позволяет назначить переменную в области вызова. Вы не пытаетесь это сделать. Вам нужен только доступ к справочнику DataGrid и доступ к его полю Items. Это не требует ref вообще.

2 голосов
/ 19 февраля 2012

Если вы хотите использовать предыдущий сценарий, то после использования метода Add () вызовите функцию UpdateLayout () для datagrid в следующем операторе. Надеюсь, это поможет.

0 голосов
/ 19 февраля 2012

Так же, как расширение того, что сказал Ethicallogics, я бы создал подкласс и переопределил add, чтобы он каждый раз вызывал UpdateLayout, тогда вам не нужно об этом беспокоиться.

Как правило, хорошо создавать подклассы всех классов .net [специально для всего, что связано с пользовательским интерфейсом], которые вам понадобятся. Таким образом, если вы столкнетесь с пользовательскими требованиями, вам не придется делать это позже.Всегда используйте свои собственные подклассы.

...