WPF C# 在应用程序启动时隐藏 TabControl 项
我创建了一个在应用程序运行时加载的起始页,但它也显示了我的选项卡控件(两个用于编辑和图表的选项卡项)。
如何在启动时隐藏我的选项卡控件项目并仅在用户选择文件 -> 时才显示它新的?
非常感谢!
Xaml:
<TabControl Height="Auto" Name="tabControl1" Width="Auto">
<TabItem Header="Diagram" Name="DiagramTab"></TabItem>
<TabItem Header="Rulebase" Name="RuleTab" >
<Grid>
<TextBox Height="Auto" Name="RuleText" Width="Auto" Text="" AcceptsTab="True" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" GotFocus="FocusChanged" KeyDown="ContentChanged" HorizontalScrollBarVisibility="Visible" />
</Grid>
</TabItem>
</TabControl>
这是我的文件 ->新菜单项:
private void NewItem(object sender, RoutedEventArgs e)
{
ProcessNewCommand();
}
private void ProcessNewCommand()
{
if (dataChanged)
{
string sf = SaveFirst();
if (sf != "Cancel")
{
ClearState();
}
}
else
{
ClearState();
}
}
风格:
<Style TargetType="TabItem" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Grid>
<Border
Name="Border"
Background="LightBlue"
BorderBrush="Black"
BorderThickness="0"
CornerRadius="6,6,0,0" >
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="12,2,12,2"/>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Border" Property="Background" Value="LightBlue" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter TargetName="Border" Property="Background" Value="LightGray" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
I've created a start page that loads when the application is run but it is also showing my tabcontrol (two tabitems for editing & diagraming).
How do I hide my tabcontrol items on startup and only show it when a user selects file -> new?
Many thanks!
Xaml:
<TabControl Height="Auto" Name="tabControl1" Width="Auto">
<TabItem Header="Diagram" Name="DiagramTab"></TabItem>
<TabItem Header="Rulebase" Name="RuleTab" >
<Grid>
<TextBox Height="Auto" Name="RuleText" Width="Auto" Text="" AcceptsTab="True" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" GotFocus="FocusChanged" KeyDown="ContentChanged" HorizontalScrollBarVisibility="Visible" />
</Grid>
</TabItem>
</TabControl>
Here's my file -> new menu item:
private void NewItem(object sender, RoutedEventArgs e)
{
ProcessNewCommand();
}
private void ProcessNewCommand()
{
if (dataChanged)
{
string sf = SaveFirst();
if (sf != "Cancel")
{
ClearState();
}
}
else
{
ClearState();
}
}
Style:
<Style TargetType="TabItem" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Grid>
<Border
Name="Border"
Background="LightBlue"
BorderBrush="Black"
BorderThickness="0"
CornerRadius="6,6,0,0" >
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="12,2,12,2"/>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="Border" Property="Background" Value="LightBlue" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter TargetName="Border" Property="Background" Value="LightGray" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在这些场景中,我通常有一个
ProjectViewModel
(或ProjectModel
),它被添加为包含Window
的DataContext
。TabControl
可以将这些选项卡绑定到数据上下文上的项目。因此,当
NewCommand
触发时,您会说this.DataContext = new ProjectViewModel()
。下面的样式将处理其余的事情。In these scenarios I usually have a
ProjectViewModel
(orProjectModel
) that gets added as theDataContext
of the containingWindow
. TheTabControl
could have those tabs bound to the items on the data context.So when the
NewCommand
fires you would saythis.DataContext = new ProjectViewModel()
. The style below will take care of the rest.您可以将选项卡的可见性属性绑定到您的应用程序类或任何您拥有的类,这样只有在用户按下“新建”时才显示选项卡。
You could bind the Tab's Visibility property to your application class or whatever you have so you only show the tabs once the user presses New.