【问题标题】:Create 2 tabs dynamically with different contents wpf使用不同的内容动态创建 2 个选项卡 wpf
【发布时间】:2012-05-15 10:27:06
【问题描述】:

以下代码在单击按钮时创建 2 个选项卡,但不显示任何内容。我还在学习这个,想知道错误是什么。

后面的代码

public void button2_Click(object sender, RoutedEventArgs e)
{
    popUp1.IsOpen = false;

    Canvas canvas4 = new Canvas();
    ScrollViewer viewer4 = new ScrollViewer();
    viewer4.Content = canvas4;

    string txtfl = File.ReadAllText(textBox1.Text);
    TextBlock txbl1 = new TextBlock();
    txbl1.Text = txtfl;
    canvas4.Children.Add(txbl1);

    TabItem newTab1 = new TabItem();
    newTab1.Header = "Text File";
    newTab1.Content = viewer4;
    tabctrl1.Items.Add(newTab1);

    tabctrl1.SelectedItem = newTab1;

    Brush br = new SolidColorBrush(Colors.White);
    Canvas canvas2 = new Canvas();
    canvas2.Background = br;
    ScrollViewer viewer2 = new ScrollViewer();
    viewer2.Content = canvas2;

    TabItem newTab2 = new TabItem();
    newTab2.Header = "Test";
    newTab2.Content = viewer2;
    tabctrl1.Items.Add(newTab2);
}

TabControl 是使用 XAML 创建的

XAML

<Window ... >
    <Grid>
        <Popup Name="popUp1" Width="500" Height="300" Placement="Center" IsEnabled="False" IsOpen="False">
            <Canvas x:Name="myCanvas1" Width="500"  Height="300" Visibility="Visible">
                <Button Content="Button" Height="38" HorizontalAlignment="Left" Margin="12,71,0,0" Name="button1" VerticalAlignment="Top" Width="151" Click="button2_Click" />                            
            </Canvas>
        </Popup>

        <TabControl Name="tabctrl1" Width="1345" Height="28" Margin="0,24,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" BorderThickness="2">
            <TabControl.Background>
                <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                    <GradientStop Color="#FF3A60AD" Offset="0.528"/>
                    <GradientStop Color="#FF6A85D8" Offset="0.01"/>
                </LinearGradientBrush>
            </TabControl.Background>                   
        </TabControl>
    </Grid>
</Window>

【问题讨论】:

  • 提供画布高度和宽度。然后看看会发生什么。
  • 在编写 XAML 元素时,通常最好先使用图形编辑器并查看需要包含在元素中的属性。
  • 如果您正在学习 WPF,我建议您完全忘记您之前关于构建 UI 的任何知识并使用适当的方式。您在代码隐藏中创建所有内容,在这里您最好使用 XAML。如果您发布您的 tabctrl1 的来源,那将会有所帮助。此外,像 Snoop 这样的工具也是了解 WPF 如何构建和布局控件的好方法。
  • 您的代码在我尝试时似乎运行良好。您确定您正在阅读的文件中有一些内容吗?通过将颜色从白色更改为更明显的颜色,可能更容易发现第二个选项卡是否按预期工作。
  • @Ashwini 如果您想动态创建选项卡,那么可以,但在评论中要解释的太多了。它只是围绕 WPF 的基本基础 DataBinding。您定义的一个简单类可以定义为您的选项卡,并将它们添加到集合(绑定到控件)将自动创建您的选项卡。查看 MSDN 中的 ItemsControl 和 DataBinding。

标签: c# .net wpf wpf-controls


【解决方案1】:

嗨,您的代码似乎不起作用的原因是选项卡控件的高度设置为 28。

尝试将其更改为 280,您应该可以看到内容。

  <TabControl Name="tabctrl1" Width="1345" Height="280" Margin="0,24,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" BorderThickness="2">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-30
    • 2018-10-08
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多