动态添加选项卡到选项卡控件

发布于 2024-10-02 14:01:35 字数 756 浏览 8 评论 0原文

我正在尝试将选项卡动态添加到选项卡控件。我在资源中有控件模板:

<ControlTemplate x:Key="memoTab" TargetType="{x:Type TabItem}">  
    <TabItem Header="Memo">  
        <TextBox Name="memoText"
                 HorizontalAlignment="Stretch"
                 VerticalAlignment="Stretch"
                 AcceptsReturn="True"/>
    </TabItem>  
</ControlTemplate>

我在代码后面创建选项卡:

TabItem tab = new TabItem();  
tab.Template = (ControlTemplate) FindResource("memoTab");  
tab.ApplyTemplate();  
TextBox tb = (TextBox) tab.Template.FindName("memoText", tab);  
tb.DataContext = memo; //this is a string created by linq query  
tabControl.Items.Add(tab);

我最终在选项卡控件中看到选项卡,但它不可选择,并且我看不到其中的任何内容。

I am trying to dynamically add tabs to tab control. I have control template in resources:

<ControlTemplate x:Key="memoTab" TargetType="{x:Type TabItem}">  
    <TabItem Header="Memo">  
        <TextBox Name="memoText"
                 HorizontalAlignment="Stretch"
                 VerticalAlignment="Stretch"
                 AcceptsReturn="True"/>
    </TabItem>  
</ControlTemplate>

I create tab in code behind:

TabItem tab = new TabItem();  
tab.Template = (ControlTemplate) FindResource("memoTab");  
tab.ApplyTemplate();  
TextBox tb = (TextBox) tab.Template.FindName("memoText", tab);  
tb.DataContext = memo; //this is a string created by linq query  
tabControl.Items.Add(tab);

I end up with tab visible in tab control, but it is not selectable, and I cannot see anything in it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别把无礼当个性 2024-10-09 14:01:35

我可以重现它,尝试这种方式:

private void Button_Click(object sender, RoutedEventArgs e)
{
    var content = new TextBlock();
    content.Text = "Hello World! " + new Random().Next(1, 20).ToString();

    TabItem tab = new TabItem();
    tab.Header = "Hello world!";
    tab.Content = content;
    tabControl.Items.Add(tab);
}

UI

<Grid>
    <TabControl Name="tabControl">
        <TabItem Header="Existing tab 1" />
        <TabItem Header="Existing tab 2" />
    </TabControl>

    <Button HorizontalAlignment="Left" VerticalAlignment="Bottom" Content="Add Tab" Width="100" Height="30" Click="Button_Click" />
</Grid>

希望这有帮助!

I could reproduce it, try this way instead:

private void Button_Click(object sender, RoutedEventArgs e)
{
    var content = new TextBlock();
    content.Text = "Hello World! " + new Random().Next(1, 20).ToString();

    TabItem tab = new TabItem();
    tab.Header = "Hello world!";
    tab.Content = content;
    tabControl.Items.Add(tab);
}

UI

<Grid>
    <TabControl Name="tabControl">
        <TabItem Header="Existing tab 1" />
        <TabItem Header="Existing tab 2" />
    </TabControl>

    <Button HorizontalAlignment="Left" VerticalAlignment="Bottom" Content="Add Tab" Width="100" Height="30" Click="Button_Click" />
</Grid>

Hope this helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文