将StackPanel的CodeBehind实例绑定到XAML

时间:2012-08-24 20:18:24

标签: c# .net wpf binding

我有一个奇怪的情况。

我需要在codebehind中创建一个StackPanel。然后我需要将该stackpanel绑定到xaml中的UI。

通常我会为此使用ContentControl。但它有焦点问题(它不能阻止Tab键顺序Focusable =“False”没有效果)。我也试过了一个用户控件,但是有同样的问题。

所以我需要使用其他一些控件。我决定成立一个小组。 (StackPanel看起来和任何面板一样好。)

但是,我似乎无法找到一种方法来绑定我的Xaml中的“In Code”堆栈面板?

有办法做到这一点吗? (没有使用contentcontrol或usercontrol)

2 个答案:

答案 0 :(得分:1)

  

它无法阻止Tab键顺序Focusable =“False”无效

IsTabStop怎么办?

使用的最轻量级的是ContentPresenter这就是我要使用的。

答案 1 :(得分:0)

在KAXAML中对此进行了测试,当按下TAB时,焦点不会转到ContentPresenter或ContentControl中定义的任何项目。

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <StackPanel>
  <TextBox>aaaaa</TextBox>
  <TextBox>bbbbb</TextBox>
    <ContentControl Focusable="False">
    <ContentControl.ContentTemplate>
    <DataTemplate>
    <StackPanel Focusable="False" Background="Red" Width="100" Height="50"></StackPanel>
    </DataTemplate>
    </ContentControl.ContentTemplate>
    </ContentControl>
    <ContentControl Focusable="False">
    <ContentControl.ContentTemplate>
    <DataTemplate>
    <TextBox Focusable="False">hello</TextBox>
    </DataTemplate>
    </ContentControl.ContentTemplate>
    </ContentControl>
    <ContentPresenter Focusable="False">
    <ContentPresenter.Content>
    <TextBox Focusable="False">hello</TextBox>
    </ContentPresenter.Content>
    </ContentPresenter>
  <TextBox>ccccc</TextBox>
  <TextBox>ddddd</TextBox>
  </StackPanel>
</Page>