【问题标题】:Xaml TextBox not behavingXaml 文本框没有行为
【发布时间】:2013-05-15 18:19:32
【问题描述】:

我正在尝试在运行时从 XAML 创建 UI,类似于

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 上,并在那里显示一个消息框,它就可以工作。如果我有一个空的处理程序或没有处理程序,它就没有。

我是否需要为某些事件设置一些显式处理?如果是,是哪些,我该如何处理?

更新:按照建议,我尝试将动态标记放入新应用的 MainPage 中,如下所示:

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

其中xaml 是一个包含上述内容的字符串文字,其他一切都是VS2010 向导离开它的方式。这样可行。但我看不出有效的区别是什么。

更新更新:这是一条红鲱鱼;不同的是环境。它适用于 VS,但不适用于我在实际应用中使用的 Silverlight ActiveX 控件。

【问题讨论】:

  • 哎呀,我愿意。括号也在实际代码中排列:)
  • 附注:var dynamic = XamlReader.Load(xaml); 让我困惑了几秒钟...请仔细选择变量名。
  • 我没有意识到这是一个保留字。至少我今天学到了一件事。
  • 这并没有错,只是令人困惑:将返回通过paring字符串创建的对象的方法的结果分配给名为dynamic的变量,其类型由编译器使用var确定。 ..

标签: c# silverlight xaml


【解决方案1】:

您是否在根元素上定义了根命名空间?

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

这里只是在黑暗中拍摄,但您是否尝试过将动态创建的内容添加为静态“MainPage.xaml”网格的子项而不是 RootVisual?

【讨论】:

  • 关于命名空间,是的,我附上了一个例子。
  • 关于 MainPage.xaml,是的,这似乎有效,如上所述。但是有什么区别呢?啊!
  • 刚刚尝试创建一个新的 UserControl 作为 RootVisual,并将其内容设置为动态内容。没变。 :(
【解决方案2】:

检查主 XAML 文件中的 IsEnabled="True" 属性,如果将其设置为 false,则控件将不可编辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2019-05-09
    相关资源
    最近更新 更多