どのように操作する細胞のデータが表示されるコンポーネントのラインナップツールキット開発を維持-管理を行?

StackOverflow https://stackoverflow.com/questions/1834055

  •  11-09-2019
  •  | 
  •  

質問

以下のコンポーネントのラインナップコードの内容を表示名は、ZipCodeの コンポーネントのラインナップツールキット開発を維持-管理.

しかし、私はしたくないデータを表示すだけではありませんが、 若干の変更, などいいかもしれませんねを表示すべてのzipcodesで表示す"-0000"は、か、もしく表示したい"n/a"細胞のそばにある空白にします。

私見つけることができずに CopyingCellClipboardContent るように見えませんかってきた。

思いが必要な場合、あるいは コンバータ がないといけないとだめになったことはあります。

たいのですが操作する細胞のコンテンツの開発を維持-管理細胞でのランタイム?

ー:

<Window x:Class="TestControl3423.Window2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:tk="http://schemas.microsoft.com/wpf/2008/toolkit"
    Title="Window2" Height="300" Width="500">
    <StackPanel>
        <tk:DataGrid x:Name="dataGrid" 
                     Margin="0 0 0 10"
                     AutoGenerateColumns="False" 
                     CanUserAddRows="False"
                     HeadersVisibility="Column" 
                     MaxHeight="400"
                     IsReadOnly="True"
                     Background="#fff"
                     ColumnWidth="SizeToHeader">
        </tk:DataGrid>
    </StackPanel>
</Window>

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Data;
using System.Windows.Documents;
using Microsoft.Windows.Controls;

namespace TestControl3423
{
    public partial class Window2 : Window
    {
        public Window2()
        {
            InitializeComponent();

            dataGrid.ItemsSource = Customer.GetCustomers();

            dataGrid.Columns.Clear();

            DataGridTextColumn dgtc1 = new DataGridTextColumn();
            dgtc1.Header = "First Name";
            dgtc1.Binding = new Binding("FirstName");
            dgtc1.Width = new DataGridLength(1, DataGridLengthUnitType.Auto);
            dataGrid.Columns.Add(dgtc1);

            DataGridTextColumn dgtc2 = new DataGridTextColumn();
            dgtc2.Header = "Zip Code";
            dgtc2.Binding = new Binding("ZipCode");
            dgtc2.Width = new DataGridLength(1, DataGridLengthUnitType.Auto);
            dgtc2.CopyingCellClipboardContent += new EventHandler<DataGridCellClipboardEventArgs>(dgtc2_CopyingCellClipboardContent);
            dataGrid.Columns.Add(dgtc2);
        }

        void dgtc2_CopyingCellClipboardContent(object sender, DataGridCellClipboardEventArgs e)
        {
            DataGridTextColumn dgtc = sender as DataGridTextColumn;
            dgtc.SetValue(dgtc.GetValue() + "-0000"); //ERROR
        }
    }

    public class Customer
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Street { get; set; }
        public string Location { get; set; }
        public string ZipCode { get; set; }

        public static List<Customer> GetCustomers()
        {
            List<Customer> customers = new List<Customer>();
            customers.Add(new Customer { FirstName = "Jim", LastName = "Jones", ZipCode = "23434" });
            customers.Add(new Customer { FirstName = "Joe", LastName = "Adams", ZipCode = "12312" });
            customers.Add(new Customer { FirstName = "Jake", LastName = "Johnson", ZipCode = "23111" });
            customers.Add(new Customer { FirstName = "Angie", LastName = "Reckar", ZipCode = "54343" });
            customers.Add(new Customer { FirstName = "Jean", LastName = "Anderson", ZipCode = "16623" });
            return customers;
        }

    }
}
役に立ちましたか?

解決

Plsはしばらく時間がかかる場合以下のコードが作します。私たDataGridTextColumn子孫のクラスオーバーライドGenerateElement方法です。ありきの操作をTextBlock制御され、指定された細胞。gその価値を追加桁郵便コードです。

...
DataGridTextColumn dgtc2 = new ExtendedDataGridTextColumn(); 
dgtc2.Header = "Zip Code"; 
...

public class ExtendedDataGridTextColumn : DataGridTextColumn 
{
    protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
    {
        TextBlock element = (TextBlock)base.GenerateElement(cell, dataItem);
        element.Text = ((Customer)dataItem).ZipCode + "-0000";
        return element;
    }
}

武器agiは、dexで下がらないboxerぐ, について

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top