【问题标题】:How can I set the Taborder for the usercontrols in the Content Control of WPF?如何在 WPF 的内容控件中为用户控件设置 Taborder?
【发布时间】:2012-03-01 05:12:42
【问题描述】:

我有一个窗口,其中有两个内容控件,我在运行时在其中加载用户控件, 我需要为 ContentControl1 和 ContentControl2 中的用户控件设置 Tab 键顺序吗? 我怎样才能做到这一点?

【问题讨论】:

标签: c# wpf mvvm


【解决方案1】:

您可以使用 KeyboardNavigation.TabNavigation 和 KeyboardNavigation.TabIndex 来实现这一点。

例子:

<ContentControl Content="{Binding Head}" x:Name="HeadCtrl" Height="50" ContentTemplate="{StaticResource VectorTemplate}"/>

 <DataTemplate x:Key="VectorTemplate">
    <StackPanel KeyboardNavigation.TabNavigation="Local" KeyboardNavigation.TabIndex="-1">
         <Button Content="{Binding Path=X}" KeyboardNavigation.TabIndex="0" ></Button>
         <Button Content="{Binding Path=Y}" KeyboardNavigation.TabIndex="1" ></Button>
    </StackPanel>
 </DataTemplate>

【讨论】:

  • 但是我有两个内容控件,我需要在两个内容控件之间切换。挑战在于 contentcontrol1 在运行时填充了具有文本框的用户控件,并且在编译时填充了内容控件 2 的按钮。我没有使用任何数据模板。我对 WPF 很陌生,请帮助我
  • 用户控件中文本框的数量是恒定的吗?如果是,那么您可以在创建文本框和按钮时指定 KeyboardNavigation.TabIndex。它可以是任何形式。挑战在于您的文本框的数量是否是动态的
【解决方案2】:

我能理解的是设置您在运行时添加的用户控件的 Tab 顺序。这样做怎么样:

 var usercontrol = new UserControl1();
 usercontrol.TabIndex = 0;
 ContentControl1.Content = usercontrol;

【讨论】:

  • 是的.. 但是用户控件内的文本框是什么?
  • 您可以在用户控件本身中设置它,或者在 xaml 中为该文本框指定一个名称,例如 并且您可以从代码中设置它,例如 usercontrol.myTextBox.TabIndex = 0;
猜你喜欢
  • 1970-01-01
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多