DependencyProperty. Регистр () или.RegisterAttached ()

sendBroadcast(new Intent(
           Intent.ACTION_MEDIA_MOUNTED,
           Uri.parse("file://" +  Environment.getExternalStorageDirectory())));

Этот код работает, но он очень дорогой. Размонтирует & amp; затем монтирует SDCard, что может повлиять на некоторые приложения или потребовать огромные системные ресурсы для обновления галереи. Я все еще ищу лучшую альтернативу & amp; опубликую, если я получу один.

39
задан Sander Rijken 8 December 2009 в 09:33
поделиться

2 ответа

Я полагаю, вы имели в виду DependencyProperty.Register и DependencyProperty.RegisterAttached.

DependencyProperty.Register используется для регистрации обычного DependencyProperty. Вы можете рассматривать их как обычные свойства с добавленной особенностью, заключающейся в том, что они могут участвовать в привязке данных, анимации и т. Д. WPF. Фактически, они отображаются как обычные свойства (с методами доступа get и set) поверх нетипизированного DependencyObject.SetValue / GetValue. Вы объявляете их как часть вашего типа.

С другой стороны, присоединенные свойства отличаются. Они предназначены как система расширяемости. Если вы когда-либо использовали расширители в Windows Forms, они похожи. Вы объявляете их как часть типа для использования в другом типе.

Они часто используются для информации, связанной с компоновкой. Например, Canvas нужны координаты Left / Top, Grid нужны Row и Column, DockPanel нужна информация Dock и т. Д. Было бы беспорядком, если бы все это нужно было объявить для каждого Control, который можно разложить. Таким образом, они объявляются на соответствующей панели, но используются в любом элементе управления.

Вы можете использовать то же самое для присоединения любой информации к DependencyObject, если вам нужно. Может оказаться полезным просто объявить часть информации, которую вы можете установить в xaml, чтобы использовать ее позже, например, в стиле для существующего класса.

Итак, эти два типа DependencyProperty служат совершенно разным целям. Обычные свойства (зарегистрированные с помощью Register ()) используются так же, как обычные свойства, как часть интерфейса вашего типа.

50
ответ дан 27 November 2019 в 02:40
поделиться

Разница между DependencyProperty.Register () и DependencyProperty.RegisterAttached () заключается в том, что .Register () используется для регистрации «обычного» свойства зависимости в DependencyObject, а .RegisterAttached () - используется для установки «присоединенного» свойства зависимости.

Разница между двумя типами свойств зависимости достаточно проста: обычные свойства зависимости устанавливаются для конкретного DependencyObject, как и любое другое свойство .NET. Присоединенные свойства, с другой стороны, связаны с конкретным DependencyObject (например, Grid), но устанавливаются на полностью отдельный DependencyObject, часто дочерний объект DependencyObject, который определяет присоединенное свойство (например, Grid.Row, присоединенное свойство, устанавливается на дочерних элементах родительской Grid).

11
ответ дан 27 November 2019 в 02:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: