【发布时间】: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