Xaml TextBox not behaving
本文关键字:behaving not TextBox Xaml | 更新日期: 2023-09-27 18:24:00
我正在尝试在运行时使用类似的东西从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上,并在那里显示一个消息框,它就可以工作了。如果我有一个空的处理程序或没有处理程序,它就没有。
我需要为某些事件设置一些明确的处理吗?如果是,是哪些,我该如何处理?
Upadate:按照建议,我尝试将动态标记放入一个新应用程序的主页中,如下所示:
public MainPage()
{
InitializeComponent();
var dynamic = XamlReader.Load(xaml);
this.LayoutRoot.Children.Add(dynamic as UIElement);
}
其中xaml
是包含上述内容的字符串文字,其他一切都是VS2010向导留下的。但我看不出有效的区别是什么
更新:这是转移注意力;不同之处在于环境。它可以在VS中工作,但不能在我在实际应用程序中使用的Silverlight ActiveX控件中工作。
您在根元素上定义了根命名空间吗?
<param name="initParams" value="xaml=<TextBox xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' Text='hi'/>" />
这只是一个偶然的机会,但你是否尝试过将动态创建的内容添加为静态"MainPage.xaml"网格的子级,而不是RootVisual?
检查主XAML文件中的IsEnabled="True"
属性,如果将其设置为false
,则控件将不可编辑。