Xaml TextBox не ведет себя - PullRequest
       1

Xaml TextBox не ведет себя

0 голосов
/ 09 февраля 2012

Я пытаюсь создать пользовательский интерфейс из XAML во время выполнения, с чем-то вроде

private void Application_Startup (object esender, StartupEventArgs e)
{
  this.RootVisual = (UIElement)(XmlReader.Load(e.InitParams["Xaml"])

Если я передаю ему этот XAML:

<Canvas
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  xmlns:sdk="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls">

<StackPanel>
  <TextBox Width="120" Margin="8" Text="Edit Me" />
  <CheckBox Margin="8">Normal</CheckBox>
  <ComboBox Margin="8" Width="120" SelectedIndex="1">
    <ComboBoxItem Content="First Normal Item" />
    <ComboBoxItem Content="Second Normal Item" />
  </ComboBox>
</StackPanel>
</Canvas>

, тогда флажок и список ведут себя какожидается, но мой TextBox не отвечает на набор текста, он остается с его начальным значением.Действительно странная (для меня) часть заключается в том, что, если я помещаю обработчик для KeyDown в RootVisual, и там отображается окно сообщения, это работает.Если у меня есть пустой обработчик или нет обработчика, это не так.

Нужно ли настроить явную обработку некоторых событий?Если да, то какие и как с ними справляться?

Обновление: как было предложено, я попытался поместить динамическую разметку в главную страницу нового приложения, например:

    public MainPage()
    {
        InitializeComponent();
        var dynamic = XamlReader.Load(xaml);
        this.LayoutRoot.Children.Add(dynamic as UIElement);
    }

где xaml - строковый литерал, содержащий содержимое, как указано выше, а все остальное - это то, как его оставил мастер VS2010.Это работает.Но я не вижу, какова эффективная разница.

Обновление обновления: это красная сельдь;Разница заключается в окружающей среде.Он работает в VS, но не в элементе управления Silverlight ActiveX, который я использую в реальном приложении.

Ответы [ 2 ]

0 голосов
/ 15 мая 2013

Проверьте свойство IsEnabled="True" в основном файле XAML, если оно установлено на false, то элементы управления не будут редактироваться.

0 голосов
/ 09 февраля 2012

Вы определили корневое пространство имен для вашего корневого элемента?

      <param name="initParams" value="xaml=&lt;TextBox xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' Text='hi'/&gt;" />

Просто выстрел в темноте, но вы пытались добавить динамически создаваемый контент как дочерний элемент статического "MainPage.xaml"Сетка вместо RootVisual?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...