2

助けが必要で、正しい方向に向けられる必要があります。2 次元データを表示する WPF アプリケーションを作成しています。次のように表示されます。

-------------------------
|y/x| 1 | 2 | 3 | 4 | 5 |
|  1| 1 | 2 | 3 | 4 | 5 |
|  2| 2 | 4 | 6 | 8 | 10|
|  3| 3 | 6 | 9 | 12| 15|
|  4| 4 | 8 | 12| 16| 20|
|  5| 5 | 10| 15| 20| 25|
-------------------------

サンプル コード: XAML:

<Window x:Class="WpfApplication6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        DataContext="{Binding RelativeSource={RelativeSource Self}}">
    <Grid>
        <!--Place control for 2d data here-->
    </Grid>
</Window>

C#:

    public partial class MainWindow : Window
    {
        string[,] values = new string[5,5];
        string[] x = new string[5];
        string[] y = new string[5];

        public MainWindow()
        {
            InitializeComponent();
            CreateArrays();
        }

        private void CreateArrays()
        {
            for (int i = 0; i < values.GetLength(0); i++)
            {
                for (int j = 0; j < values.GetLength(1); j++)
                {
                    values[i, j] = ((i+1) * (j+1)).ToString();
                }
            }

            for (int i = 0; i < x.GetLength(0); i++)
            {
                x[i] = (i+1).ToString();
            }

            for (int j = 0; j < y.GetLength(0); j++)
            {
                y[j] = (j+1).ToString();
            }

        }
    }

したがって、最初の行は x 値である必要があり、最初の列は y 値であり、残りは値です。左上のセルには「y/x」が含まれていることに注意してください。データを並べ替える可能性はありません (ヘッダーをクリックするなど)。複数の行や列を一度に選択して、データをクリップボードにコピーする機能が必要です。データは編集可能であってはなりません。また、最初の行と最初の列には異なる背景色が必要です。

これを行う方法に関する提案はありますか?

4

1 に答える 1

0

これを試して:

<Grid>
    <ItemsControl x:Name="itemscontrol">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Columns="6" Rows="6"  />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <TextBlock Text="{Binding}" Margin="5" />
                </Grid>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</Grid>

データを取り込むにはさまざまな方法があります-たとえば

public MainWindow()
{
    InitializeComponent();
    this.itemscontrol.ItemsSource = new[] {"x/y", "1","2","3","4","5",
                                            "1","1","2","3","4","5",
                                            "2","2","4","6","8","10",
                                            "3","3","6","9","12","15",
                                            "4","4","8","12","16","20",
                                            "5","5","10","15","20","25"};
}
于 2012-05-31T13:55:14.673 に答える