5
A
回答
0
我最終做的是創建一個基類,創建我想在每個窗口中使用的UI代碼。這使我可以爲控件設置事件並在基類中擁有事件訂閱。如果有更好的方法來做到這一點,比如使用xaml,我想知道。
public WindowBase()
{
Initialized += WindowBase_Initialized;
}
private void WindowBase_Initialized(object sender, EventArgs e)
{
Border border = new Border();
border.SetResourceReference(Control.StyleProperty, "WindowBorder");
border.Child = new ContentPresenter { Content = this.Content};
this.Content = border;
}
5
您可以爲窗口創建ControlTemplate。這是一個非常基本的例子,它有一些控件和觸發器。您可以輕鬆添加更多元素以使其符合您的需求。
<ControlTemplate x:Key="MyWindowTemplate" TargetType="{x:Type Window}">
<Border x:Name="WindowBorder" Style="{DynamicResource WindowBorderStyle}">
<Grid>
<Border Margin="4,4,4,4" Padding="0,0,0,0" x:Name="MarginBorder">
<AdornerDecorator>
<ContentPresenter/>
</AdornerDecorator>
</Border>
<ResizeGrip Visibility="Collapsed" IsTabStop="false" HorizontalAlignment="Right" x:Name="WindowResizeGrip"
VerticalAlignment="Bottom" />
</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"/>
<Setter Property="Margin" TargetName="MarginBorder" Value="4,4,4,20" />
</MultiTrigger>
<Trigger Property="WindowState" Value="Maximized">
<Setter Property="CornerRadius" TargetName="WindowBorder" Value="0,0,0,0"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
您可以通過設置窗口的模板屬性中使用控件模板:
Template="{StaticResource MyWindowTemplate}"
你會想結合這樣的風格使用:
<Style x:Key="MyWindowStyle" TargetType="{x:Type Window}">
<Setter Property="AllowsTransparency" Value="False" />
<Setter Property="WindowStyle" Value="SingleBorderWindow" />
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/>
<Setter Property="Background" Value="Transparent" />
<Setter Property="ShowInTaskbar" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Border>
<AdornerDecorator>
<ContentPresenter/>
</AdornerDecorator>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
而且像這樣設置窗口上的樣式:
Style="{StaticResource MyWindowStyle}"
+0
這很好。我現在唯一的問題是我在ControlTemplate代碼中有一些事件。如果我希望所有窗口都使用該模板,那麼我需要將該資源放入不同的文件中。當我這樣做時,事件不再起作用。 – 2009-02-20 19:59:50
相關問題
- 1. 在WPF中創建公共DataGridTemplateColumn
- 2. 如何在BackgroundWorker中創建WPF窗口?
- 3. Wpf創建窗口鎖
- 4. 創建WPF MDI窗口類
- 5. 在運行時創建WPF窗口
- 6. 公共信息窗口
- 7. 創建Windows窗體的外觀
- 8. 以編程方式在WPF中創建窗口窗體
- 9. 如何在WPF中創建可以在主窗口之外拖動的面板?
- 10. 關於在WPF中創建日誌窗口的建議
- 11. 從WinForms創建WPF窗口BackgroundWorker
- 12. 創建按鈕來移動WPF窗口
- 13. WPF創建窗口彈出菜單
- 14. C#WPF DataGrid外部窗口
- 15. 如何在WPF中的窗口中創建圖形
- 16. WPF:在兩個窗口之間共享一個可觀察的集合?
- 17. 在WPF應用程序中創建新窗口
- 18. 在c#中創建自定義通知彈出窗口wpf
- 19. 在不同的線程中創建WPF多個窗口
- 20. 在DLL項目中沒有創建WPF窗口?
- 21. 如何在WPF中創建模板窗口?
- 22. 如何在WPF中創建自己的窗口框架?
- 23. 如何在WPF中爲頁面創建窗口模式?
- 24. 如何在WPF中創建自定義窗口用戶控件?
- 25. 在Wpf窗口中使用創建的DLL?
- 26. android創建公共文件
- 27. C#創建公共實例
- 28. CSS最小化窗口更改外觀
- 29. 透明窗口更改外觀
- 30. 如何創建「外觀」表?
你能解釋多一點..你想要一個預定義內容的窗口......就像ASP中的主頁面?還是我在錯誤的軌道上? – Gishu 2009-02-19 17:04:57