
[code]

    List<Member> members = new List<Member>();    
    private void BtnRegisterAcct_Click(object sender, RoutedEventArgs e)
            {
    
                string cellphone = txtMobileNr.Text;
                string firstName = txtFirstName.Text;
                string lastName = txtLastName.Text;
                string address = txtAddress.Text;
    
                if (!string.IsNullOrEmpty(firstName)&& !string.IsNullOrEmpty(lastName) && !string.IsNullOrEmpty(cellphone) && string.IsNullOrEmpty(address))
                {
                    if (ComboBox.SelectedItemProperty != null) 
                    {
                        members.Add(new Member(cellphone,firstName,lastName,address,ここにComboBoxの任意のアイテムを入れたいです));
                    }
                }
    
            }
    
[/code]

if文で、最初に代入した全ての変数がIsNullOrEmptyでないとき、さらにネスト上になったif文のコンボボックスの値も
nullではないときという条件付けをしています。

そして、その条件であった場合に、リストmembersに先ほどの変数と、コンボボックスの任意に選ばれたアイテムを追加したいです。しかしコンボボックス内のアイテムの、コード内での扱い方が不明です。

ComboBox（ドロップダウンメニューです）のアイテムは、Child member, Normal member, VIP member
です。どう扱ったらよいのでしょうか。よろしくお願いします。


CC BY-SA 4.0
2019-01-02T00:08:34.957
51655
2019-01-02T04:21:03.667
2019-01-02T04:21:03.667
31225
31225
question
c# visual-studio wpf
ComboBox内のアイテムをリスト(List<T>)に加えたい場合


コンボボックスの`SelectedItem`で選択中の`ComboBoxItem`が取得できます。  
そこから`Content`を取り出してstring型にすることでアイテムに表示されている値を取り出せます。

`ComboBox.SelectedItemProperty`は静的なプロパティなので、実際にxaml上に記述したコンボボックスのインスタンスから選択中のアイテムを取ることはできません。

下記のコードでコンボボックスの値をリストボックスに表示できます。(住所や氏名などのテキストボックスは割愛)  
コンボボックスの`ItemsSource`に独自のクラスを設定している場合は`SelectedItem`をキャストしてください。

**MainWindow.xaml**

[code]

    <Window x:Class="WpfApp1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApp1"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <Grid>
            <StackPanel>
                <ComboBox Name="CmbMember">
                    <ComboBoxItem Content="Child member"/>
                    <ComboBoxItem Content="Normal member"/>
                    <ComboBoxItem Content="Vip member"/>
                </ComboBox>
                <Button Name="BtnRegisterAcct" Content="test"/>
                <ListBox Name="LstCustomer" DisplayMemberPath="DisplayMember"/>
            </StackPanel>
        </Grid>
    </Window>
    
[/code]

**MainWindow.xaml.cs**

[code]

    using System.Collections.Generic;
    using System.Windows;
    using System.Windows.Controls;
    
    namespace WpfApp1
    {
        /// <summary>
        /// MainWindow.xaml の相互作用ロジック
        /// </summary>
        public partial class MainWindow : Window
        {
            public List<Customer> Customers { get; set; }
    
            public MainWindow()
            {
                InitializeComponent();
    
                Customers = new List<Customer>();
                LstCustomer.ItemsSource = Customers;
    
                BtnRegisterAcct.Click += BtnRegisterAcct_Click;
            }
    
            private void BtnRegisterAcct_Click(object sender, RoutedEventArgs e)
            {
                string cellphone = "090-1234-5678";
                string firstName = "John";
                string lastName = "Smith";
                string address = "日本";
    
                if (!string.IsNullOrEmpty(firstName) && !string.IsNullOrEmpty(lastName) && !string.IsNullOrEmpty(cellphone) && !string.IsNullOrEmpty(address))
                {   
                    if (CmbMember.SelectedItem != null)
                    {
                        var item = (ComboBoxItem)CmbMember.SelectedItem;
                        // 選択中のコンボボックスアイテムをそのまま保持したい時
                        Customers.Add(new Customer(cellphone, firstName, lastName, address, item));
                        // 中の文字列を取り出したい時
                        Customers.Add(new Customer(cellphone, firstName, lastName, address, item.Content.ToString()));
    
                        // 再描画
                        LstCustomer.Items.Refresh();
                    }
                }
            }
        }
    
        public class Customer
        {
            public Customer(string cellphone, string firstName, string lastName, string address, string member)
            {
                CellPhone = cellphone;
                FirstName = firstName;
                LastName = lastName;
                Address = address;
                Member = member;
            }
    
            public Customer(string cellphone, string firstName, string lastName, string address, ComboBoxItem item)
                : this(cellphone, firstName, lastName, address, item.Content.ToString())
            {
            }
    
            public string CellPhone { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public string Address { get; set; }
            public string Member { get; set; }
    
            public string DisplayMember
            {
                get
                {
                    return string.Format("[{0}] {1} {2}: {3} ({4})", Member, FirstName, LastName, Address, CellPhone);
                }
            }
        }
    }
    
[/code]


CC BY-SA 4.0
2019-01-02T03:40:56.330
51657
2019-01-02T03:40:56.330
9820
51655
answer