0

私はこれに慣れていないので、我慢してください。

ビューモデルと、項目の独自のソースを持つ、いくつかのデータが既に含まれている ItemsControl を含むビューがあります。

ただし、コントロール内の項目には常に 10 個あるため、効果的に番号を付けたいと考えています。左側に大量のテキストブロックを追加するだけでこれを行うことができますが、これは面倒なので、別の方法を見つけようとしています.

だから、これは私がこれまでに持っているものの要点です:

<ItemsControl.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition />
                                <ColumnDefinition />
                                <ColumnDefinition />
                            </Grid.ColumnDefinitions>
                            <TextBlock Grid.Column="0" Text="{Binding RelativeSource={RelativeSource AncestorType=ItemsControl}, Path=DataContext.Nums}" />
                            <TextBlock Grid.Column="1" Text="{Binding Item1}" />
                            <TextBlock Grid.Column="2" Text="{Binding Item2}" />
                        </Grid>
                    </StackPanel>
                </DataTemplate>
            </ItemsControl.ItemTemplate>

私の問題は、もちろん、1-10 のリスト プロパティがあるため、この場合は "(Collection)" である各アイテムに同じアイテムを表示することです。

別の .cs ファイルでこれにバインドします。

private List<int> _nums = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

public List<int> Nums
{
    get { return _nums; }
}

編集:

そのため、itemssource 内に文字列である新しいプロパティを作成し、アプリがソース データを収集する方法をいじくり回すことで解決策を見つけ、一貫して機能させることができました。

この方法が機能するかどうかはまだ興味がありますが、私の意見では、作業ははるかに少なくて済みます。

4

1 に答える 1

0

私の意見では、最も簡単な方法は、単にintプロパティをデータ型またはデータ ビュー モデル クラスに追加してから、次Bindのように直接追加することですItemTemplate

<DataTemplate>
    <StackPanel Orientation="Horizontal">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <TextBlock Grid.Column="0" Text="{Binding Number}" />
            <TextBlock Grid.Column="1" Text="{Binding Item1}" />
            <TextBlock Grid.Column="2" Text="{Binding Item2}" />
        </Grid>
    </StackPanel>
</DataTemplate>

WPF では、通常、表示する必要があるすべてのデータを含むビューごとにビュー モデル クラスを作成しようとします。

更新 >>>

データに付属している場合と付属していない場合がある数値は無視してください。プロパティを追加してint Number、他のプロパティにデータを入力するときに0に設定したままにします。データをビューモデルに渡すときは、データを反復処理して、正しく番号を付けます。コレクションの名前が であると仮定するとItems、次のようにすることができます。

for (int index = 1; index < Items.Count; index++)
{
    Items[index - 1].Number = index;
}
于 2013-10-04T13:42:47.923 に答える