新公司主要用wpf做項目,之前也沒有接觸過這類東西,經過一周的學習發現wpf的頁面布局,樣式設置和網頁設計差不多。
兩者都有樣式文件可以為控件統一設置樣式,就連優先級都差不多,發現還挺有意思。下面進入正題,怎樣在程序運行后動態添加控件。
要想添加控件,容器是必須要有的,幾大布局控件都可以 Grid Canvas UniformGrid DockPanel StackPanel WrapPanel 下面就以WrapPanel 為例進行演示
先上代碼
/// <summary> /// 添加控件的方法 /// </summary> /// <param name="Container"> Pannel類的實例</param> /// <param name="Control">UIElement 實例</param> public static void DynamicAdd(Panel Container, UIElement Control) { Container.Children.Add(Control); } private void buttonAdd_Click(object sender, RoutedEventArgs e) { Button btn = new Button(); btn.Width = 200; btn.Height = 70; //設置按鈕樣式使用此種方法必須將資源文件引用到當前頁面 btn.Style = Resources["NoticeButton"] as Style; //此種方法也可以設置樣式 //獲取App.xaml中的樣式個人更喜歡這種 //Style style = (Style)this.FindResource("NoticeButton"); //為按鈕設置樣式 // btn.Style = style; //將btn添加到ufg DynamicAdd(wrp, btn); }
這里是后台的代碼很簡單只是在設置樣式的時候要注意一下用哪種方法
前台xaml代碼主要是對資源的引用
<Window.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/Css/EventsButton.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Window.Resources> <Grid> <Grid.RowDefinitions> <RowDefinition ></RowDefinition> <RowDefinition Height="30"></RowDefinition> </Grid.RowDefinitions> <WrapPanel Name="wrp" Grid.Row="0"></WrapPanel> <Button Content="添加" Grid.Row="1" Height="23" HorizontalAlignment="Center" Name="buttonAdd" VerticalAlignment="Top" Width="75" Click="buttonAdd_Click" /> </Grid>
如果使用第一支方法設置的話必須在當前頁面引用資源字典文件,而第二種方法只需在APP.xaml中引用就可以了,為了方便管理推薦第二種方法。
下面看一下效果
由於剛接觸wpf好多地方都不熟悉希望能有人一起學習共同提高。