0

コンテンツがバインドされた Border 内に TextBox のグリッドがあります

<Border BorderBrush="White" BorderThickness="1" Margin="0">
    <TextBlock TextWrapping="Wrap" FontSize="29.333" Text="{Binding TextArray[0][0], Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/>
</Border>
<Border BorderBrush="White" BorderThickness="1" Margin="0" Grid.Column="1">
    <TextBlock TextWrapping="Wrap" FontSize="29.333" Text="{Binding TextArray[0][1], Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/>
</Border>
<Border BorderBrush="White" BorderThickness="1" Margin="0" Grid.Column="2">
    <TextBlock TextWrapping="Wrap" FontSize="29.333" Text="{Binding TextArray[0][2], Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/>
</Border>
<Border BorderBrush="White" BorderThickness="1" Margin="0" Grid.Row="1" Grid.Column="0">
    <TextBlock TextWrapping="Wrap" FontSize="29.333" Text="{Binding TextArray[1][0], Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/>
</Border>
<Border BorderBrush="White" BorderThickness="1" Margin="0" Grid.Row="1" Grid.Column="1">
    <TextBlock TextWrapping="Wrap" FontSize="29.333" Text="{Binding TextArray[1][1], Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/>
</Border>
<Border BorderBrush="White" BorderThickness="1" Margin="0" Grid.Row="1" Grid.Column="2">
    <TextBlock TextWrapping="Wrap" FontSize="29.333" Text="{Binding TextArray[1][2], Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/>
</Border>
<Border BorderBrush="White" BorderThickness="1" Margin="0" Grid.Row="2" Grid.Column="0">
    <TextBlock TextWrapping="Wrap" FontSize="29.333" Text="{Binding TextArray[2][0], Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/>
</Border>
<Border BorderBrush="White" BorderThickness="1" Margin="0" Grid.Row="2" Grid.Column="1">
    <TextBlock TextWrapping="Wrap" FontSize="29.333" Text="{Binding TextArray[2][1], Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/>
</Border>
<Border BorderBrush="White" BorderThickness="1" Margin="0" Grid.Row="2" Grid.Column="2">
    <TextBlock TextWrapping="Wrap" FontSize="29.333" Text="{Binding TextArray[2][2], Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/>
</Border>

これは小さなグリッドでは問題ありませんが、大きなグリッドでは値をコピーして貼り付けたり、置き換えたりすることがたくさんあります。これを行うより良い方法はありますか?

4

2 に答える 2

2

WinRT 用の DataGrid を使用しない理由 - ここで確認できる Syncfusion Offers のようなサード パーティから WinRT 用に利用できるデータグリッドがたくさんあります。

http://darkcore.in/getting-started-in-syncfusions-datagrid-sfdatagrid-for-winrt/

于 2013-06-08T14:32:24.780 に答える
2

簡単な解決策です。クレイジーな TextArray の使用をやめてください。あなたが示しているような配列を実際に持っているふりをしましょう。生活を楽にしませんか?

データの単純化から始めましょう!

string[][] _Data = new[] 
    { 
        new string[] { "A", "B", "C" }, 
        new string[] { "1", "2", "3" } 
    };
var _NewData =
    from d in _Data
    select new
    {
        One = d[0],
        Two = d[1],
        Three = d[2]
    };
this.DataContext = _NewData;

次に、XAML を単純化できます。

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <ItemsControl ItemsSource="{Binding}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid Width="600">

                    <Grid.Resources>
                        <Style TargetType="Border">
                            <Setter Property="BorderBrush" Value="White" />
                            <Setter Property="BorderThickness" Value="1" />
                            <Setter Property="Margin" Value="0" />
                        </Style>
                        <Style TargetType="TextBlock">
                            <Setter Property="TextWrapping" Value="Wrap" />
                            <Setter Property="FontSize" Value="29.333" />
                            <Setter Property="HorizontalAlignment" Value="Center" />
                            <Setter Property="VerticalAlignment" Value="Center" />
                            <Setter Property="Margin" Value="0" />
                        </Style>
                    </Grid.Resources>

                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition />
                        <ColumnDefinition />
                    </Grid.ColumnDefinitions>

                    <!-- first record -->
                    <Border Grid.Column="0">
                        <TextBlock Text="{Binding One}" />
                    </Border>

                    <!-- second record -->
                    <Border Grid.Column="1">
                        <TextBlock Text="{Binding Two}" />
                    </Border>

                    <!-- third record -->
                    <Border Grid.Column="2">
                        <TextBlock Text="{Binding Three}" />
                    </Border>

                </Grid>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</Grid>

現在、ゼロの冗長性があります。XAML を使用することを意図していました。

頑張ってください!

于 2013-06-08T03:26:16.303 に答える