練習了一下有關資源的部分,下面是練習時的測試程式碼,有興趣的朋友可以參考看看
練習了一下有關資源的部分,下面是練習時的測試程式碼,有興趣的朋友可以參考看看
首先,很重要的一點,資源名稱是有區分大小寫的,所以像我VB用習慣了,一下要分大小寫還真的有點給他不習慣;言歸正傳,我們可以把一些通用的設定(比如說顏色)設定在資源裡面,感覺有點像Sub/Function,分門別類的管理,如果變動也是更改一個地方就可以了,比如說像是下面這樣
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Window1" Title="Window1" Height="346" Width="469" Name="Window1">
<Window.Resources>
<SolidColorBrush x:Key="BackColor">AliceBlue</SolidColorBrush>
<SolidColorBrush x:Key="ForeColor">Red</SolidColorBrush>
</Window.Resources>
<StackPanel>
<Button Background="{StaticResource BackColor}"
Foreground="{StaticResource ForeColor}"
Name="Button1">Click</Button>
</StackPanel>
</Window>
也可以將相關的設定放在外面的XAML檔案裡面,如果要這麼做的話要先新增一個"資源字典"的檔案,像是下面這張圖
加入之後"資源字典"檔案內容會像下面這樣
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="BackColor">AliceBlue</SolidColorBrush>
<SolidColorBrush x:Key="ForeColor">Red</SolidColorBrush>
</ResourceDictionary>
而原本的Window1的XAML Code會像下面這樣
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Window1" Title="Window1" Height="346" Width="469" Name="Window1">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="buttonResource.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<!--
<SolidColorBrush x:Key="BackColor">AliceBlue</SolidColorBrush>
<SolidColorBrush x:Key="ForeColor">Red</SolidColorBrush>
-->
</Window.Resources>
<StackPanel>
<Button Background="{StaticResource BackColor}"
Foreground="{StaticResource ForeColor}"
Name="Button1">Click</Button>
</StackPanel>
</Window>
要特別留意,如果資源名稱重複的話,可是會發生錯誤的喔。
那如果要在程式碼(xxx.vb)裡面使用定義好的資源該怎麼用呢?可以用下面的程式碼來取得
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
''資源名稱是有區分大小寫的
''MessageBox.Show(Button1.FindResource("foreColor").GetType.Name)
MessageBox.Show(Button1.FindResource("ForeColor").GetType.Name)
End Sub