【问题标题】:Set width property inside page.resource在 page.resource 中设置 width 属性
【发布时间】:2015-09-24 07:01:46
【问题描述】:

我正在尝试根据设备是 PC 还是手机(UWP 应用)来设置 RichTextBlock 的宽度,但我无法访问该属性...

<Page.Resources>
    <DataTemplate x:Key="sectionTemplate">
        <common:RichTextColumns>
            <common:RichTextColumns.ColumnTemplate>
                <DataTemplate>
                    <RichTextBlockOverflow Width="300" Margin="20,0,0,10"/>
                </DataTemplate>
            </common:RichTextColumns.ColumnTemplate>
            <RichTextBlock Margin="10,0,10,10" TextAlignment="Justify" Width="300" TextWrapping="WrapWholeWords">
                <Paragraph>
                    <Run Text="{Binding}" />
                </Paragraph>
            </RichTextBlock>
        </common:RichTextColumns>
    </DataTemplate>
</Page.Resources>

对最简单的方法有什么建议吗?

【问题讨论】:

  • 你可以使用转换器。

标签: c# .net xaml uwp


【解决方案1】:

使用自定义设备系列状态触发器!

Custom state triggers on GitHub.

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup>
        <VisualState x:Name="desktop">
            <VisualState.StateTriggers>
                <triggers:DeviceFamilyStateTrigger DeviceFamily="Desktop" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
                <Setter Target="richTB.Width" Value="300" />
            </VisualState.Setters>
        </VisualState>
        <VisualState x:Name="mobile">
            <VisualState.StateTriggers>
                <triggers:DeviceFamilyStateTrigger DeviceFamily="Mobile" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
                <Setter Target="richTB.Width" Value="200" />
            </VisualState.Setters>
        </VisualState>
    </VisualStateGroup>
<VisualStateManager.VisualStateGroups>

【讨论】:

  • 虽然 DeviceFamilyStateTrigger 是一个不错的解决方案,但您必须牢记 Continuum。在不久的将来,您的“移动”应用将在 23 英寸屏幕上运行。
  • 我最终不得不将它粘贴到用户控件中,但它工作得很好!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-14
  • 2013-07-08
  • 2011-12-21
相关资源
最近更新 更多