数据模板的重用

发布于 2024-09-27 18:13:32 字数 1914 浏览 5 评论 0原文

我的 Treelistview 控件中的不同单元格有两个 DataTemplate。 模板有 90% 相似。 如何重用相同的 Xaml ?

  <DataTemplate x:Key="@names">
            <TextBlock Name="txt" Text="{Binding Names}" Style="{DynamicResource @BasicTextBlockStyle}"
                    Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Border},AncestorLevel=1}, Path=BorderBrush,Mode=OneWay}" />
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding IsVisible}" Value="True">
                    <Setter Property="Style" Value="{DynamicResource @HeaderTextBlockStyle}" TargetName="txt" />
                </DataTrigger>
                <DataTrigger Binding="{Binding IsScoped}" Value="True">
                    <Setter Property="Style" Value="{DynamicResource @RootElementTextBlockStyle}" TargetName="txt" />
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>

        <DataTemplate x:Key="@Ages">
            <TextBlock Name="txt" Text="{Binding Age}" Style="{DynamicResource @BasicTextBlockStyle}"
                    Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Border},AncestorLevel=1}, Path=BorderBrush,Mode=OneWay}" />
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding IsVisible}" Value="True">
                    <Setter Property="Style" Value="{DynamicResource @HeaderTextBlockStyle}" TargetName="txt" />
                </DataTrigger>
                <DataTrigger Binding="{Binding IsScoped}" Value="True">
                    <Setter Property="Style" Value="{DynamicResource @RootElementTextBlockStyle}" TargetName="txt" />
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>

I have two DataTemplates for different cells in my Treelistview control.
the templates are 90% similar.
How can I reuse the identical Xaml ?

  <DataTemplate x:Key="@names">
            <TextBlock Name="txt" Text="{Binding Names}" Style="{DynamicResource @BasicTextBlockStyle}"
                    Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Border},AncestorLevel=1}, Path=BorderBrush,Mode=OneWay}" />
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding IsVisible}" Value="True">
                    <Setter Property="Style" Value="{DynamicResource @HeaderTextBlockStyle}" TargetName="txt" />
                </DataTrigger>
                <DataTrigger Binding="{Binding IsScoped}" Value="True">
                    <Setter Property="Style" Value="{DynamicResource @RootElementTextBlockStyle}" TargetName="txt" />
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>

        <DataTemplate x:Key="@Ages">
            <TextBlock Name="txt" Text="{Binding Age}" Style="{DynamicResource @BasicTextBlockStyle}"
                    Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Border},AncestorLevel=1}, Path=BorderBrush,Mode=OneWay}" />
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding IsVisible}" Value="True">
                    <Setter Property="Style" Value="{DynamicResource @HeaderTextBlockStyle}" TargetName="txt" />
                </DataTrigger>
                <DataTrigger Binding="{Binding IsScoped}" Value="True">
                    <Setter Property="Style" Value="{DynamicResource @RootElementTextBlockStyle}" TargetName="txt" />
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谁许谁一生繁华 2024-10-04 18:13:32

你可以尝试做这样的事情:

<DataTemplate x:Key="Inner">
    <TextBlock Name="txt" Text="{Binding}" Style="{DynamicResource @BasicTextBlockStyle}"
            Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Border},AncestorLevel=1}, Path=BorderBrush,Mode=OneWay}" />
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding IsVisible}" Value="True">
            <Setter Property="Style" Value="{DynamicResource @HeaderTextBlockStyle}" TargetName="txt" />
        </DataTrigger>
        <DataTrigger Binding="{Binding IsScoped}" Value="True">
            <Setter Property="Style" Value="{DynamicResource @RootElementTextBlockStyle}" TargetName="txt" />
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

<DataTemplate x:Key="Names">
    <Border BorderBrush="Black" BorderThickness="1" Height="100" Width="100" HorizontalAlignment="Left">
        <ContentPresenter Content="{Binding Names}" ContentTemplate="{StaticResource Inner}" />
    </Border>
</DataTemplate>

<DataTemplate x:Key="Ages">
    <Border BorderBrush="Black" BorderThickness="1" Height="100" Width="100" HorizontalAlignment="Right">
        <ContentPresenter Content="{Binding Ages}" ContentTemplate="{StaticResource Inner}" />
    </Border>
</DataTemplate>

You can try doing something like this:

<DataTemplate x:Key="Inner">
    <TextBlock Name="txt" Text="{Binding}" Style="{DynamicResource @BasicTextBlockStyle}"
            Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Border},AncestorLevel=1}, Path=BorderBrush,Mode=OneWay}" />
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding IsVisible}" Value="True">
            <Setter Property="Style" Value="{DynamicResource @HeaderTextBlockStyle}" TargetName="txt" />
        </DataTrigger>
        <DataTrigger Binding="{Binding IsScoped}" Value="True">
            <Setter Property="Style" Value="{DynamicResource @RootElementTextBlockStyle}" TargetName="txt" />
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>

<DataTemplate x:Key="Names">
    <Border BorderBrush="Black" BorderThickness="1" Height="100" Width="100" HorizontalAlignment="Left">
        <ContentPresenter Content="{Binding Names}" ContentTemplate="{StaticResource Inner}" />
    </Border>
</DataTemplate>

<DataTemplate x:Key="Ages">
    <Border BorderBrush="Black" BorderThickness="1" Height="100" Width="100" HorizontalAlignment="Right">
        <ContentPresenter Content="{Binding Ages}" ContentTemplate="{StaticResource Inner}" />
    </Border>
</DataTemplate>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文