Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
 UserControl вытащить наружу св-во внутреннего элемента  [new]
xpoft2010
Member

Откуда: Оттуда
Сообщений: 184
Возникла необходимость создать небольшой текстовый редактор на основе RichTextBox. Т.к. помимо RichTextbox'а в компоненте будут еще и несколько ToolBar'ов, решено было вынести компонент в UserControl. Далее захотелось вытащить св-во RichTextBox'а Document наружу, чтобы можно было написать что то вроде:

<local:MyAdvRichTextBox>
    <local:MyAdvRichTextBox.Document>
        <FlowDocument>
             <Paragraph>
                 (.....)
        </FlowDocument>
    </local:MyAdvRichTextBox.Document>
</local:MyAdvRichTextBox>

Сделал в UserControl'е св-во TextDocument
...
        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
<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 на форму в рабочем проекте, получаю:

К сообщению приложен файл. Размер - 32Kb
27 мар 11, 12:05    [10429097]     Ответить | Цитировать Сообщить модератору
 Re: UserControl вытащить наружу св-во внутреннего элемента  [new]
уТКа
Member

Откуда: Страна дураков и разбитых дорог
Сообщений: 1266
xpoft2010,

вам написали в чем проблема, ваш контрол должен наследоваться от базового класса Control либо от DependencyObject
27 мар 11, 14:22    [10429428]     Ответить | Цитировать Сообщить модератору
 Re: UserControl вытащить наружу св-во внутреннего элемента  [new]
xpoft2010
Member

Откуда: Оттуда
Сообщений: 184
уТКа
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
27 мар 11, 15:32    [10429609]     Ответить | Цитировать Сообщить модератору
 Re: UserControl вытащить наружу св-во внутреннего элемента  [new]
уТКа
Member

Откуда: Страна дураков и разбитых дорог
Сообщений: 1266
xpoft2010,

автор
Что делаю не так?

думаю, что по двум строкам кода вам не смогут помочь.
27 мар 11, 15:46    [10429658]     Ответить | Цитировать Сообщить модератору
 Re: UserControl вытащить наружу св-во внутреннего элемента  [new]
xpoft2010
Member

Откуда: Оттуда
Сообщений: 184
Все оказалось предельно просто! :)
Достаточно было сделать public св-во которое предоставляет св-во Document в общий доступ
...
        public FlowDocument TextDocument
        {
            get { return this.txtMain.Document; }
            set { this.txtMain.Document = value; }
        }
...

уТКа
xpoft2010,

автор
Что делаю не так?

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


Следующие темы буду более раскрыто ставить вопрос.
27 мар 11, 17:27    [10429961]     Ответить | Цитировать Сообщить модератору
Все форумы / WPF, Silverlight Ответить