1. 程式人生 > >Wpf 動態新增控制元件設定樣式

Wpf 動態新增控制元件設定樣式

新公司主要用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>