Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WPF установка Name пользовательского контрола 
:(
    Опции темы
X-3R1
Дата 4.10.2009, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 28.4.2007

Репутация: нет
Всего: 2



Задача создать TextBox в режиме numeric-mode.
Создал пользовательский элемент управления DigitTextBox переопределив соответствующий метод для фильтрации:
XAML:
Код

<TextBox x:Class="RestPause.DigitTextBox"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</TextBox>

Code:
Код

namespace RestPause
{
    /// <summary>
    /// Interaction logic for DigitTextBox.xaml
    /// </summary>
    public partial class DigitTextBox : TextBox
    {
        public DigitTextBox()
        {
            InitializeComponent();
        }

        protected override void OnPreviewTextInput(System.Windows.Input.TextCompositionEventArgs e)
        {
           // фильтруем значения
        } 
    }
}


Затем на другой форме добавляем его:
Код

<Window
    x:Class="RestPause.ConfigDialog"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:my="clr-namespace:RestPause;assembly=">
...
        <my:DigitTextBox Name="myDigitTextBox" Grid.Column="1" Text="50" TextWrapping="NoWrap" Margin="0" 
                 Background="{x:Null}" Width="33" MaxWidth="33" MaxLength="3" MaxLines="1" IsUndoEnabled="False"/>
...
    
</Window>

Т.к. я с ним хочу работать в коде, я устанавливаю свойство Name="myDigitTextBox". Компиллятор выдаёт ошибку (без установки Name всё собирается успешно):

Because 'DigitTextBox' is implemented in the same assembly, you must set the x:Name attribute rather than the Name attribute. Line 24 Position 20.

Хрен с ним, заменяю Name, на x:Name="myDigitTextBox". Ошибка другая:

ConfigDialog.xaml(24,28): error CS0426: The type name 'DigitTextBox' does not exist in the type 'RestPause.RestPause'
Done building project "bflrflug.tmp_proj" -- FAILED.
RestPause\ConfigDialog.xaml(24,4): error MC3074: The tag 'DigitTextBox' does not exist in XML namespace 'clr-namespace:RestPause;assembly='. Line 24 Position 4.
Done building project "RestPause.csproj" -- FAILED.

Как всё-таки можно установить пользовательский элемент управления в WPF в XAML, чтобы с ним можно было работать и в коде?

Это сообщение отредактировал(а) X-3R1 - 4.10.2009, 13:07
PM MAIL   Вверх
math64
Дата 4.10.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 2
Всего: 72



Попробуйте полностью пересобрать проект 
PM   Вверх
KelTron
Дата 4.10.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 2
Всего: 38



Юзер контролам нужно имя задавать как x:Name.

Тут, кстати, об этом написано:
Цитата(X-3R1 @  4.10.2009,  12:25 Найти цитируемый пост)
Because 'DigitTextBox' is implemented in the same assembly, you must set the x:Name attribute rather than the Name attribute. 

  smile 


Это сообщение отредактировал(а) KelTron - 4.10.2009, 14:03


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.