1

私はWPFが初めてです。

問題の説明: 作成する必要があるアイテムの数を示す xml ファイルがあります。アイテムごとにボタンが必要です。20 個のアイテムがある場合---> xaml ファイルのロード時に、xml が読み込まれ、(アイテムの数の) count が読み込まれて作成されます。

xamlファイルでこれを行う方法はありますか?

4

1 に答える 1

3

これは簡単で簡単な修正です:

でパネル(たとえばStackPanel)を公開し、実行時Xamlに新しいボタンを追加しますChildren...

MainWindow.xaml:

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Loaded="Window_Loaded">

        <StackPanel x:Name="mainPanel"/>

</Window>

MainWindow.xaml.cs

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            var buttonNames = new List<string>();

            // Parse the XML, Fill the list..
            // Note: You could do it the way you prefer, it is just a sample

            foreach (var buttonName in buttonNames)
            {
                //Create the button
                var newButton = new Button(){Name = buttonName};

                //Add it to the xaml/stackPanel
                this.mainPanel.Children.Add(newButton);    
            }
        }

データ バインディングを使用したソリューション

MainWindow.xaml:

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" >
        <ItemsControl ItemsSource="{Binding YourCollection}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
</Window>

MainWindow.xaml.cs

    public MainWindow()
    {
        InitializeComponent();

        YourCollection = new List<Button>();

        // You could parse your XML and update the collection
        // Also implement INotifyPropertyChanged

        //Dummy Data for Demo 
        YourCollection.Add(new Button() { Height = 25, Width = 25 });
        YourCollection.Add(new Button() { Height = 25, Width = 25 });

        this.DataContext = this;

    }

    public List<Button> YourCollection { get; set; }
于 2013-05-02T02:58:58.407 に答える