gpt4 book ai didi

c# - 如何在 WPF 中制作模板窗口?

转载 作者:IT王子 更新时间:2023-10-29 04:47:33 39 4
gpt4 key购买 nike

所以我正在构建一个有很多窗口的应用程序,所有窗口都具有相同的基本布局:

  1. 一个主窗口
  2. 在顶角有一个标志
  3. 标题栏
  4. 底部的状态显示
  5. 窗口特定控件的区域。

目前我必须在每个窗口中重新创建这个结构。理想情况下,我希望将此布局编码在一个地方,也许是一个自定义 Window 子类以便于使用。有没有人知道如何开始或以前遇到过类似问题的经验?

最佳答案

您可以创建一个以窗口为目标的新 ControlTemplate 来完成此操作,如下所示。

<ControlTemplate x:Key="WindowControlTemplate1" TargetType="{x:Type Window}">
<Border
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="0.93*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>

<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.21*"/>
<ColumnDefinition Width="0.79*"/>
</Grid.ColumnDefinitions>

<ContentPresenter
Grid.ColumnSpan="2"
Grid.Row="1"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
/>
<ResizeGrip
HorizontalAlignment="Right"
x:Name="WindowResizeGrip"
VerticalAlignment="Bottom"
IsTabStop="False"
Visibility="Collapsed"
Grid.Column="1"
Grid.Row="2"
/>
<TextBlock Text="My Logo" />
<TextBlock Grid.Column="1" Text="My Title"/>
<StatusBar Height="20" Grid.ColumnSpan="2" Grid.Row="2"/>
</Grid>
</Border>

<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="ResizeMode" Value="CanResizeWithGrip"/>
<Condition Property="WindowState" Value="Normal"/>
</MultiTrigger.Conditions>
<Setter Property="Visibility" TargetName="WindowResizeGrip" Value="Visible"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>

关于c# - 如何在 WPF 中制作模板窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/420538/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com