0

我有一个奇怪的场景。

我需要在代码隐藏中创建一个 StackPanel。然后我需要将该堆栈面板绑定到 xaml 中的 UI。

通常我会为此使用 ContentControl。但它有焦点问题(它不能从标签顺序中阻止 Focusable="False" 无效)。我也尝试了一个用户控件,但也有同样的问题。

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

但是,我似乎无法在 Xaml 中找到绑定到“代码中”堆栈面板的方法?

有没有办法做到这一点?(不使用内容控件或用户控件)

4

2 回答 2

1

它不能被标签顺序阻止 Focusable="False" 没有效果

怎么样IsTabStop

此外,最轻量级的东西ContentPresenter是我会使用的。

于 2012-08-24T20:33:13.427 回答
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>
于 2012-08-24T20:35:03.323 回答