C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 複数列コンボボックス


(過去ログ 122 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■72838 / inTopicNo.1)  複数列コンボボックス
  
□投稿者/ しがないサラリーマン (1回)-(2014/07/24(Thu) 17:17:38)

分類:[C#] 

WPFで、Accessのような複数列のコンボボックスをユーザコントロールとして作成しようと、
いろんなサイトを見様見真似しながら奮闘しています。

そして、複数列を実現できたのですが、
・リストアイテムから選択しても、テキスト部に表示されない。
・テキスト部に文字入力しても、同じ先頭文字のリストアイテムが自動選択されない。
の問題を抱えています。

どこを改良すれば良いか、教えてください。
よろしくお願いします。

※C# 2013


≪MultiColumnComboBox.xaml≫

<UserControl x:Class="Test.UI.Controls.MultiColumnComboBox"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Name="UserControl"
             Width="100">
    <ComboBox
        IsReadOnly="False"
        IsEditable="True"
        ItemsSource="{Binding ElementName=UserControl, Path=ItemsSource}"
        >
        <ComboBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Width="180" />
            </ItemsPanelTemplate>
        </ComboBox.ItemsPanel>
       
        <ComboBox.ItemTemplate>
            <HierarchicalDataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Column1}" Width="100" />
                    <TextBlock Text="{Binding Column2}" Width="100" />
                </StackPanel>
            </HierarchicalDataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>
</UserControl>


≪MultiColumnComboBox.xaml.cs≫

using System;
using System.Collections;
using System.Windows;
using System.Windows.Controls;

namespace Test.UI.Controls
{
    public partial class MultiColumnComboBox : UserControl
    {
        public MultiColumnComboBox()
        {
            InitializeComponent();
        }

        public IEnumerable ItemsSource
        {
            get { return (IEnumerable)GetValue(ItemsSourceProperty); }
            set { SetValue(ItemsSourceProperty, value); }
        }

        public static readonly DependencyProperty ItemsSourceProperty =
            DependencyProperty.Register("ItemsSource", typeof(IEnumerable), typeof(MultiColumnComboBox), new UIPropertyMetadata(null));
    }
}


≪MultiColumnComboBoxItem.cs≫

using System;

namespace Test.UI.Controls
{
    public class MultiColumnComboBoxItem
    {
        public MultiColumnComboBoxItem(object column1, object column2) 
        {
            Column1 = column1.ToString();
            Column2 = column2.ToString();
        }

        public string Column1 { get; set; }
        public string Column2 { get; set; }
    }
}


≪MainWindow.xaml≫

<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:tj="clr-namespace:Test.UI.Controls"
        xmlns:local="clr-namespace:Test.UI.Controls" x:Class="Test.UI.Controls.MainWindow"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <tj:MultiColumnComboBox x:Name="mccombo1" Width="80"
                HorizontalAlignment="Left" VerticalAlignment="Center"
                Margin="10,10,0,288.4"
                />
    </Grid>
</Window>


≪MainWindow.xaml.cs≫

using System;
using System.Windows;

namespace Test.UI.Controls
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            MultiColumnComboBoxItem[] items = { 
                new MultiColumnComboBoxItem("aaaaaaaa","1"), 
                new MultiColumnComboBoxItem("bbbbb","2"), 
                new MultiColumnComboBoxItem("ccccccccc","33")
            };
            mccombo1.ItemsSource = items;
        }
    }
}

以上です。
よろしくお願い致します。

引用返信 編集キー/
■72840 / inTopicNo.2)  Re[1]: 複数列コンボボックス
□投稿者/ Hongliang (212回)-(2014/07/24(Thu) 18:06:10)
ComboBoxのTextSearch.TextPath添付プロパティに、選択されているアイテムの
表示対象プロパティ名を指定してやれば良いでしょうかね。

<ComboBox ... TextSearch.TextPath="Column1"">

引用返信 編集キー/
■72841 / inTopicNo.3)  Re[2]: 複数列コンボボックス
□投稿者/ しがないサラリーマン (2回)-(2014/07/24(Thu) 18:15:14)
すばらしい!
ドンピシャリです。

ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -