Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Как получить имя элемента RichTextBox


Автор: vinograd2008 4.8.2011, 14:53
Здравствуйте. Есть 2 проекта WPF. В одном есть UserControl а во втором Window, в Window вставляется UserControl в UserControl есть элемент RichTextBox с именем richTextBox1. Как получить имя элемента RichTextBox из UserControl второго проекта программно в классе Window первого проекта.

Автор: ДобренькийПапаша 4.8.2011, 15:02
Цитата(vinograd2008 @  4.8.2011,  14:53 Найти цитируемый пост)
Как получить имя элемента RichTextBox из UserControl второго проекта программно в классе Window первого проекта. 

Чиво?))) (Хм, это конец рабочего дня, или вы, действительно, так непонятно написали?)

Автор: vinograd2008 4.8.2011, 15:17
У меня есть Solution в нем два проекта WpfApllication1  и WpfApplication2, в WpfApllication2 находится UserControl

Код

<UserControl x:Class="WpfApplication2.MW"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:my="clr-namespace:WpfApplication2;assembly=WpfApplication2"
        xmlns:custom="clr-namespace:WpfApplication2"
        Height="311" Width="522" Name="root">
<Grid>
  <RichTextBox Name="richTextBox1" Margin="-5,0,0,33" Height="258" VerticalAlignment="Bottom" />
</Grid>
</UserControl>


А в WpfApllication1 находится Window в который вставлен UserControl в котором есть элемент RichTextBox и имя у этого элемента задано richTextBox1

Код

    <Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:r="clr-namespace:WpfApplication2;assembly=WpfApplication2"
        Title="Editor" Height="371" Width="544" WindowStyle="ToolWindow">
<Grid>
  <r:MW Margin="0,20,8,6" Grid.ColumnSpan="3" r:MW.Name="richTextBox1" />
    </Grid>
</Window>


Как получить имя элемента RichTextBox то есть richTextBox1 в классе MainWindow из другого класса MW
проекта WpfApplication2?

Автор: RastaDja 4.8.2011, 16:51
рекурсивным поиском ищи
Код

public void FindName(DependencyObject node)
        {
            System.Collections.IEnumerable allObj = LogicalTreeHelper.GetChildren(node);
            foreach (Object obj in allObj)
            {
                if (obj.GetType().ToString() == "System.Windows.Controls.RichTextBox")
                {
                    RichTextBox tmpRBox = (RichTextBox )obj;
                    String name = tmpRBox.Name;      //   <-------- Вот тут твое имя, но учти, сколько Текст боксов, столько имен
                    // break;                                        //   а это, если ты уверен, что нет больше одного бокса
                }
                try
                {
                    FindName((DependencyObject)obj);
                }
                catch   //  исключение, если обьект не есть контейнером
                {
                }
            }
        }


Добавлено @ 16:52
а если имя знаешь тогда
Код

RichTextBox  tmpRBox = (RichTextBox )LogicalTreeHelper.FindLogicalNode(rootElement, "richTextBox1");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)