动态显示网格内容

发布于 2024-12-06 20:59:35 字数 302 浏览 1 评论 0原文

我为我的应用程序开发了 3 种不同的布局(类似于我猜你所说的“皮肤”,但布局有很大不同,而不仅仅是颜色和字体的变化)。这些布局用于显示相同的数据,但格式完全不同。这些布局中的每一个都是在它们自己的网格内构建的。

我希望我的应用程序根据运行时可用的字符串值来决定动态显示哪个布局。

让父网格动态显示子网格的最佳方法是什么?

我试图找到某种神奇的 DataTemplate / DataBinding / 模板方法,但似乎找不到最好的方法。或者,我应该寻找显示这些不同布局的不同方法吗?像 ItemsControl 或类似的?

I have 3 different layouts (similar to I guess what you would call Skins but the layouts are hugely different, not just changes to colors and fonts) which I have developed for my application. The layouts are used for displaying the same data, but in a completely different format. Each of these layouts have been constructed within their own Grid.

I want my application to decide which layout to display dynamically based on a string value available at runtime.

What's the best way to get a parent Grid to display a Child Grid dynamically?

I'm trying to find some sort of magical DataTemplate / DataBinding / Templating method but just can't seem to find the best way. Alternatively, should I be looking at a different method of displaying these different layouts? Like an ItemsControl or similar?

Ben

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

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

发布评论

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

评论(1

策马西风 2024-12-13 20:59:35

我通常使用 ContentControl 和 DataTrigger 来确定要使用的 ContentTemplate。

例如,

<ContentControl Content="{Binding MyViewModel}">

    <ContentControl.Resources>
        <DataTemplate x:Key="DefaultTemplate">
            <TextBlock Text="DefaultTemplate" />
        </DataTemplate>

        <DataTemplate x:Key="TemplateA">
            <TextBlock Text="Template A" />
        </DataTemplate> 

        <DataTemplate x:Key="TemplateB">
            <TextBlock Text="Template B" />
        </DataTemplate>
    </ContentControl.Resources>

     <ContentControl.Style>
         <Style TargetType="{x:Type ContentControl}">
             <Setter Property="ContentTemplate" Value="{StaticResource DefaultTemplate}" />
             <Style.Triggers>
                 <DataTrigger Binding="{Binding SelectedView}" Value="ViewA">
                     <Setter Property="ContentTemplate" Value="{StaticResource TemplateA}" />
                 </DataTrigger>
                 <DataTrigger Binding="{Binding SelectedView}" Value="ViewB">
                     <Setter Property="ContentTemplate" Value="{StaticResource TemplateB}" />
                 </DataTrigger>
             </Style.Triggers>
         </Style>
     </ContentControl.Style>

 </ContentControl>

I usually use a ContentControl and DataTrigger to determine what ContentTemplate to use.

For example,

<ContentControl Content="{Binding MyViewModel}">

    <ContentControl.Resources>
        <DataTemplate x:Key="DefaultTemplate">
            <TextBlock Text="DefaultTemplate" />
        </DataTemplate>

        <DataTemplate x:Key="TemplateA">
            <TextBlock Text="Template A" />
        </DataTemplate> 

        <DataTemplate x:Key="TemplateB">
            <TextBlock Text="Template B" />
        </DataTemplate>
    </ContentControl.Resources>

     <ContentControl.Style>
         <Style TargetType="{x:Type ContentControl}">
             <Setter Property="ContentTemplate" Value="{StaticResource DefaultTemplate}" />
             <Style.Triggers>
                 <DataTrigger Binding="{Binding SelectedView}" Value="ViewA">
                     <Setter Property="ContentTemplate" Value="{StaticResource TemplateA}" />
                 </DataTrigger>
                 <DataTrigger Binding="{Binding SelectedView}" Value="ViewB">
                     <Setter Property="ContentTemplate" Value="{StaticResource TemplateB}" />
                 </DataTrigger>
             </Style.Triggers>
         </Style>
     </ContentControl.Style>

 </ContentControl>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文