1

状況:

ABCustomDataGridなど、アイテムがさまざまなカテゴリに属する​​ことができる場所があります。各カテゴリには独自のテンプレートがあります。アイテムのカテゴリは変更可能で、その場合は必要に応じてテンプレートも変更したいと考えています。背後にある ViewModel は同じです。インターフェイス要素を変更しただけです (たとえば、テンプレート AI には があり、テンプレート BI には があり、両方ともVM の同じプロパティに があります)。RowDetailsTextBlockTextBoxBinding

私がこれまでに行ったこと:

<DataGrid.RowDetailsTemplate>
    <DataTemplate>
        <Control x:Name="RowDetails" Focusable="False" />
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding TemplateID, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" Value="0">
                    <Setter TargetName="RowDetails" Property="Template" Value="{StaticResource TemplateA}" />
            </DataTrigger>
            <DataTrigger Binding="{Binding TemplateID, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" Value="1">
                <Setter TargetName="RowDetails" Property="Template" Value="{StaticResource TemplateB}" />
            </DataTrigger>
            <DataTrigger Binding="{Binding TemplateID, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" Value="2">
                <Setter TargetName="RowDetails" Property="Template" Value="{StaticResource TemplateCustom}" />
            </DataTrigger>
        </DataTemplate.Triggers>
    </DataTemplate>
</DataGrid.RowDetailsTemplate>

問題:

アイテムのカテゴリを変更すると、テンプレートが変更されていることがわかりますが、行全体が ValidationErrorTemplate (感嘆符付きの赤い境界線) を取得します。これは、テンプレートが空の場合でも発生します! テンプレートを変更するだけで、全体が爆発するように思えます。

私は何を間違っていますか?ありがとう!

4

1 に答える 1

1

何度も試行錯誤した後、テンプレート内の ComboBox に問題があることがわかりました。ここに記載されているように、ComboBox のプロパティの順序が重要です。前置きがコツで、作品を使ったアプローチSelectedValueが魅力。ItemsSourceTriggers

それにもかかわらず、私はまだそのような解決策にショックを受けています. これを答えとしてマークしますが、まだ提案を受け付けています。

于 2012-12-06T12:01:38.427 に答える