FlexGrid for WPF
データマップ列
基本操作 > 編集機能 > データマップ列

データマップされた列には、実際の値ではなく、キーが含まれます。たとえば、列の内容は都道府県コードを表す整数であっても、対応する都道府県をユーザーが表示および編集できるようにします。

次のセクションでは、FlexGrid .NET 4.5.2および.NET 5 バージョンでデータマップ列を実装する方法を学習します。

このシナリオでは、2 行を超えるコードが必要になります。
C#
コードのコピー
// Key-Valueディクショナリを構築します 
var dct = new Dictionary<int, string>(); 
foreach (var country in GetCountryNames()) 
{ 
  dct[dct.Count] = country; 
} 
 
// 辞書を列に割り当てます 
var c = _flexEdit.Columns["CountryID"]; 
c.ValueConverter = new ColumnValueConverter(dct); 
c.HorizontalAlignment = HorizontalAlignment.Left;
                               

このコードは、最初に、都道府県コードの値(整数)を都道府県(文字列)にマップする Dictionary を構築します。

次に、その Dictionary を使って ColumnValueConverter を構築し、前の例と同様に、そのコンバータを列の ValueConverter プロパティに割り当てます。

ユーザーは、Dictionary に存在するすべての都道府県を選択でき、マップされていない値を入力できなくなります。

最後に、このコードは、列の配置を左揃えに設定します。この列の実際の内容は整数値なので、デフォルトでは右揃えで配置されます。ここでは、氏名を表示するため、左揃えに設定します。

以下の図は、リストから値を選択しているときのエディターの外観を示しています。 エディターがスマートオートコンプリートをサポートしていることに注目してください。ユーザーが「Ger」と入力すると、ドロップダウンは自動的に唯一の有効なオプション「Germany」を選択します(「Guatemala」、「Eritrea」、「Romania」の順に選択しません)。

DataMappedColumn

このシナリオでは、2 行を超えるコードが必要になります。
C#
コードのコピー
public void DataMapColumn()
{
    //Hide Country Column
    var country_col = _flexEdit.Columns["Country"];
    country_col.IsVisible = false;

    //Make the CountryID column read only
    var c = _flexEdit.Columns["CountryID"];
    c.IsReadOnly = true;

    //Display Country name instead of CountryID
    //using GridDataMap
    var columnMap = new GridDataMap();
    columnMap.ItemsSource = view;
    columnMap.SelectedValuePath = "CountryID";
    columnMap.DisplayMemberPath = "Country";
    c.DataMap = columnMap;
               

このコードは、SelectedValuePathプロパティとDisplayMemberPathプロパティを使用して、Country IDキー値(整数)をCountry Names(文字列)にマップするGridDataMapクラスを使用します。

ItemsSourceプロパティは、コレクションをマップするために使用されます。 以下の図は、リストから値を選択しているときのエディターの外観を示しています。

 

DataMappedColumn

関連トピック