0

ビューに 2 つのリストがあり、同じ DataTemplate を共有したい。

最初のリストはこの DataTemplate を直接使用でき、2 番目のリストは特定の条件下で使用する必要があるため、最初のケースでは、このような XAML があり、機能します。

<ListBox ItemTemplate="{StaticResource TrackedAssetTemplate}">

2番目のケースでは、私はこのようなものを持っていますが、それを機能させることはできません..

<m:MapItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Canvas
                            m:MapLayer.Position="{Binding Location}">
                            <Button
                                Visibility="{Binding IsSelected, Converter={StaticResource BoolToReverseVisibilityConverter}}"
                                Width="{Binding PushpinWidth}" Height="{Binding PushpinWidth}"
                                Style="{StaticResource LooklessButtonStyle}"
                                Command="{Binding DataContext.SelectedPushpinChangedCommand, ElementName=LayoutRoot}"
                                CommandParameter="{Binding}"
                                Cursor="Hand">
                                <Ellipse
                                Width="{Binding PushpinWidth}" Height="{Binding PushpinWidth}" Stroke="Black" Fill="{Binding IsGPSDataRecent, Converter={StaticResource BoolToGreenRedBrushConverter}}" StrokeThickness="1">
                                    <ToolTipService.ToolTip>
                                        <TextBlock Text="{Binding DeviceId}" />
                                    </ToolTipService.ToolTip>
                                </Ellipse>
                            </Button>
                          <ContentControl
Visibility="{Binding IsSelected, Converter={StaticResource BoolToVisibilityConverter}}"                                 
DataTemplate="{StaticResource TrackedAssetTemplate}" />

だから、私の考えは、最初のリスボックスにはまっすぐなテンプレートがあるということです。マップ上でアイテムが選択されたときに同じデータ テンプレートを使用できます。それ以外の場合はボタンを表示します。テンプレートをマップ内でラップしようとしましContentControlたが、うまくいきませんでした。

それで、質問はデータテンプレート内にデータテンプレートをラップする方法ですか?

4

2 に答える 2

0

あるデータテンプレートを他のデータテンプレート内で使用する必要はないと思います。トリガーを使用してアイテムのデータテンプレートを変更するようにアイテムをスタイルできます。何かのようなもの

 <Style x:Key="ContentPresenterStyle"
           TargetType="{x:Type ContentPresenter}" >
        <Setter Property="ContentTemplate"
                        Value="{StaticResource DefaultStyleTemplate}" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=IsSelected, ,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MapListBoxItem}}}"  Value="False">
                <Setter Property="ContentTemplate"
                        Value="{StaticResource TrackedAssetTemplate}" />
            </DataTrigger>
        </Style.Triggers>
</Style>

それが役に立てば幸い..

于 2012-12-11T04:55:51.587 に答える
0

内部 ContentControl のコンテンツをデータ コンテキストにバインドし忘れている可能性があります。

<ContentControl Content={Binding .}
    Visibility="{Binding IsSelected, Converter={StaticResource BoolToVisibilityConverter}}" 
    DataTemplate="{StaticResource TrackedAssetTemplate}" />
于 2012-12-11T13:36:26.207 に答える