powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / UserControl вытащить наружу св-во внутреннего элемента
5 сообщений из 5, страница 1 из 1
UserControl вытащить наружу св-во внутреннего элемента
    #37184328
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла необходимость создать небольшой текстовый редактор на основе RichTextBox. Т.к. помимо RichTextbox'а в компоненте будут еще и несколько ToolBar'ов, решено было вынести компонент в UserControl. Далее захотелось вытащить св-во RichTextBox'а Document наружу, чтобы можно было написать что то вроде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<local:MyAdvRichTextBox>
    <local:MyAdvRichTextBox.Document>
        <FlowDocument>
             <Paragraph>
                 (.....)
        </FlowDocument>
    </local:MyAdvRichTextBox.Document>
</local:MyAdvRichTextBox>

Сделал в UserControl'е св-во TextDocument
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
...
        public FlowDocument TextDocument
        {
            get { return (FlowDocument)GetValue(TextDocumentProperty); }
            set { SetValue(TextDocumentProperty, value); }
        }

        // Using a DependencyProperty as the backing store for TextDocument.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty TextDocumentProperty =
            DependencyProperty.Register("TextDocument", typeof(FlowDocument), typeof(UserControl1), new UIPropertyMetadata());
...

Связал его со св-вом Document
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<loc:USRControl x:Class="AdvRichTextBox.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:loc="clr-namespace:AdvRichTextBox"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300" TextDocument="{Binding ElementName=txtMain, Path=Document, Mode=OneTime}">

Подскажите, может пошел не по тому пути и так вообще делать нельзя или может быть в другом проблема?

Компилится отлично, далее при попытке добавить Control на форму в рабочем проекте, получаю:
...
Рейтинг: 0 / 0
UserControl вытащить наружу св-во внутреннего элемента
    #37184466
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010,

вам написали в чем проблема, ваш контрол должен наследоваться от базового класса Control либо от DependencyObject
...
Рейтинг: 0 / 0
UserControl вытащить наружу св-во внутреннего элемента
    #37184555
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКаxpoft2010,

вам написали в чем проблема, ваш контрол должен наследоваться от базового класса Control либо от DependencyObject

Нет, то что мне написали я прекрасно вижу и понимаю, не понимаю я вот чего: Источником для привязки к DependencyProperty может быть любое, даже не Dependency, собственно по этому и запостил тему здесь. Что делаю не так?

Вот ссылка на МСДН, даже картинка есть, что привязать можно любое св-во:
http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28SYSTEM.WINDOWS.DATA.BINDING%29&rd=true
...
Рейтинг: 0 / 0
UserControl вытащить наружу св-во внутреннего элемента
    #37184578
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010,

авторЧто делаю не так?
думаю, что по двум строкам кода вам не смогут помочь.
...
Рейтинг: 0 / 0
UserControl вытащить наружу св-во внутреннего элемента
    #37184685
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все оказалось предельно просто! :)
Достаточно было сделать public св-во которое предоставляет св-во Document в общий доступ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
...
        public FlowDocument TextDocument
        {
            get { return this.txtMain.Document; }
            set { this.txtMain.Document = value; }
        }
...

уТКаxpoft2010,

авторЧто делаю не так?
думаю, что по двум строкам кода вам не смогут помочь.

Следующие темы буду более раскрыто ставить вопрос.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / UserControl вытащить наружу св-во внутреннего элемента
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]