Сложный пользовательский контроль и видимость свойств - PullRequest
1 голос
/ 14 ноября 2011

Я разрабатываю пользовательский элемент управления WPF («мультиселектор»). Я даю своим пользователям ItemsSource свойство для привязки, но внутренне я использую коллекцию ItemWrappers следующим образом:

<UserControl x:Class="TFSControls.MultiSelectorControl.MultiSelectorControl">
    <ItemsControl Name="ItemsPresenter" ItemsSource="{Binding ItemWrappers}">
        ...
    </ItemsControl>
</UserControl>

Проблема в том, что для работы этой привязки свойство ItemWrappers должно быть общедоступным. Я был бы счастлив с внутренним, потому что контроль сидит в своей собственной сборке.

Какой самый простой способ добиться этого?

Единственное решение, о котором я знаю, это создание подкласса ItemsControl в моей сборке, но это кажется неправильным - мне не нужно настраивать поведение, просто хочу, чтобы это свойство было внутренним / защищенным.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2011

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

0 голосов
/ 14 ноября 2011

Вы можете сделать ItemWrappers свойством зависимости только для чтения.

...