WPF Combobox, производный от производного, не работает - PullRequest
0 голосов
/ 27 сентября 2011

Надеюсь, кто-то сильный в WPF знает, что происходит ... Сценарий, который я выбрал ниже, также применим и к другим, таким как текстовое поле, кнопки команд и т. Д. *

Я играю с созданием пользовательских элементов управления ... Пример: работа с простым Combobox. В одной библиотеке классов проекта LibA я создал несколько примеров, полученных из ... ex: TextBox, ComboBox, Window и т. Д. Вторая библиотека LibB Я создаю другой класс, полученный из ex: Combobox в LibA ... В противном случае нет проблема .... сделал аналогичную вещь в C # WinForms без проблем.

Теперь проблема в том, что я перетаскиваю элемент управления (из LibB) в первое «окно» (нативное, чтобы не возникало проблем с деривацией) приложения, сохраняю и запускаю. Производная библиотека даже не попала в свой конструктор, который я просто поместил простой командой, просто проверив, правильно ли она создавалась, работает ли она или нет, но это не так ... В XAML формы она правильно ссылается на оба проекта пространства имен, поэтому Я знаю, что это кажется правильным.

Итак, я затем создал производный комбинированный список в том же оригинальном LibA, поместил его в форму, и ИТ-специалисты должным образом вошли в конструктор.

Вот фрагмент того, что у меня происходит.

namespace LibA
{
   public class MyCombo1 : ComboBox
   {
      public MyCombo1()
      {  ToolTip = "this is my base declaration"; } 
   }

   public class MyCombo1b : MyCombo1
   {
      public MyCombo1b() : base()
      {  ToolTip = "this constructor IS reached"; } 
   }
}

В отдельном проекте (библиотеке),

using FirstLibraryThatHas_MyCombo1
namespace LibB
{
   public class OtherLibCombobox : MyCombo1
   {
      public OtherLibCombobox() : base()
      {  ToolTip = "this version is NOT being recognized in the window"; } 
   }
}

Итак, ни один из них не разработан визуально, все они только в коде ... Кроме того, я тоже сделал это с элементом управления TextBox, те же результаты ... Он не останавливается в отладчике ... . Есть идеи?

Несмотря на то, что я изменил фактические имена из примера, вот новое окно, одно с оригинальным объявлением класса И одно с ПРОИЗВОДНОЙ версией. Вот полное окно теста XAML

<Window x:Class="MyProject.TestWindow"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   Title="TestWindow" Height="300" Width="300" 
   xmlns:my="clr-namespace:WPFGUI;assembly=WPFGUI" 
   xmlns:my1="clr-namespace:DerivedControls;assembly=DerivedControls">

  <Grid>
    <my:MyComboBoxClass
        Name="MyComboBoxInWindow" 
        HorizontalAlignment="Left" 
        Height="23" 
        Width="120" />

    <my1:cboDerivedComboClass
        Name="cboDerivedComboInWindow" 
        Height="23" 
        HorizontalAlignment="Left" 
        Width="120" />
  </Grid>
</Window>

Ответы [ 2 ]

0 голосов
/ 28 сентября 2011

Разве это не делает круговую ссылку?

Вы вызываете MyDerivedControl, который находится в другой сборке, а DerivedControl требуется первичная сборка потому что он наследует тип, который вы определили там. И потом, вы пытаетесь отобразить его в окне из основной сборки?

Попробуйте очистить и перестроить свой проект.

0 голосов
/ 28 сентября 2011

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

Кроме того, убедитесь, что все сборки предназначены для одной и той же версии платформы.

...