【问题标题】:Xamarin Forms Path losing ScaleTransform after TriggerXamarin Forms Path在触发后丢失ScaleTransform
【发布时间】:2021-06-07 12:08:01
【问题描述】:

我正在使用适用于 Android 的 Xamarin Forms。我的问题是 Path UI 元素。此 UI 元素有一个 ScaleTransform,其中图像在 X 和 Y 方向上缩放 1.5 倍。此外,它还有一个DataTrigger,它根据bool IsConnected 的状态更改FillData 属性。如果IsConnected 切换状态,则执行适当的触发器,但即使状态变回,图像也会失去其比例并保持较小。

这是我的 Xaml 代码:

<Path Margin="5" HorizontalOptions="Fill" VerticalOptions="Fill" Data="Some Geometry">
    <Path.RenderTransform>
        <ScaleTransform ScaleX="1.5" ScaleY="1.5"/>
    </Path.RenderTransform>
    <Path.Triggers>
        <DataTrigger TargetType="Path" Binding="{Binding IsConnected}" Value="True">
            <Setter Property="Fill" Value="Green"/>
        </DataTrigger>
        <DataTrigger TargetType="Path" Binding="{Binding IsConnected}" Value="False">
            <Setter Property="Fill" Value="Red"/>
            <Setter Property="Data" Value="Some Other Geometry"/>
        </DataTrigger>
    </Path.Triggers>
</Path>

这种行为让我感到惊讶。有人可以为此提出解决方案吗? 我在互联网上搜索了答案,但找不到类似的答案。

编辑:似乎问题在于Data 属性已更改。如果仅更改 Fill 属性,则比例保持不变。

根据要求提供我的路径数据:

(一些几何)

Data="M12,21L15.6,16.2C14.6,15.45 13.35,15 12,15C10.65,15 9.4,15.45 8.4,16.2L12,21M12,3C7.95,3 4.21,4.34 1.2,6.6L3,9C5.5,7.12 8.62,6 12,6C15.38,6 18.5,7.12 21,9L22.8,6.6C19.79,4.34 16.05,3 12,3M12,9C9.3,9 6.81,9.89 4.8,11.4L6.6,13.8C8.1,12.67 9.97,12 12,12C14.03,12 15.9,12.67 17.4,13.8L19.2,11.4C17.19,9.89 14.7,9 12,9Z"

(其他一些几何形状)

Value="M2.28,3L1,4.27L2.47,5.74C2.04,6 1.61,6.29 1.2,6.6L3,9C3.53,8.6 4.08,8.25 4.66,7.93L6.89,10.16C6.15,10.5 5.44,10.91 4.8,11.4L6.6,13.8C7.38,13.22 8.26,12.77 9.2,12.47L11.75,15C10.5,15.07 9.34,15.5 8.4,16.2L12,21L14.46,17.73L17.74,21L19,19.72M12,3C9.85,3 7.8,3.38 5.9,4.07L8.29,6.47C9.5,6.16 10.72,6 12,6C15.38,6 18.5,7.11 21,9L22.8,6.6C19.79,4.34 16.06,3 12,3M12,9C11.62,9 11.25,9 10.88,9.05L14.07,12.25C15.29,12.53 16.43,13.07 17.4,13.8L19.2,11.4C17.2,9.89 14.7,9 12,9Z"

【问题讨论】:

  • 为什么要在 IsConnected 变为 false 时更改 Path.Data ?数据和原来的一样吗?能否将数据提供给我们进行测试?
  • @ColeX-MSFT 数据应该是完全无关的。无论哪种方式,我都会添加我的两个数据。

标签: android xaml xamarin.forms


【解决方案1】:

出现问题是因为 RenderTransform 仅对 Some Geometry 有效一次,但对 Some Other Geometry 无效。

如果您想在路径上保留Scale,请将DataRenderTransform 也放入Triggers,并将RenderTransform 放在最后。

 <Path Margin="5" HorizontalOptions="Fill" VerticalOptions="Fill" >
       
        <Path.Triggers>
            <DataTrigger TargetType="Path" Binding="{Binding IsConnected}" Value="True">
                <Setter Property="Fill" Value="Green"/>

                <Setter Property="Data" Value="M12,21L15.6,16.2C14.6,15.45 13.35,15 12,15C10.65,15 9.4,15.45 8.4,16.2L12,21M12,3C7.95,3 4.21,4.34 1.2,6.6L3,9C5.5,7.12 8.62,6 12,6C15.38,6 18.5,7.12 21,9L22.8,6.6C19.79,4.34 16.05,3 12,3M12,9C9.3,9 6.81,9.89 4.8,11.4L6.6,13.8C8.1,12.67 9.97,12 12,12C14.03,12 15.9,12.67 17.4,13.8L19.2,11.4C17.19,9.89 14.7,9 12,9Z"/>
                <Setter Property="RenderTransform" >
                    <ScaleTransform ScaleX="10.5" ScaleY="10.5"/>
                </Setter>
            </DataTrigger>
            <DataTrigger TargetType="Path" Binding="{Binding IsConnected}" Value="False">
                <Setter Property="Fill" Value="Red"/>
               
                <Setter Property="Data" Value="M2.28,3L1,4.27L2.47,5.74C2.04,6 1.61,6.29 1.2,6.6L3,9C3.53,8.6 4.08,8.25 4.66,7.93L6.89,10.16C6.15,10.5 5.44,10.91 4.8,11.4L6.6,13.8C7.38,13.22 8.26,12.77 9.2,12.47L11.75,15C10.5,15.07 9.34,15.5 8.4,16.2L12,21L14.46,17.73L17.74,21L19,19.72M12,3C9.85,3 7.8,3.38 5.9,4.07L8.29,6.47C9.5,6.16 10.72,6 12,6C15.38,6 18.5,7.11 21,9L22.8,6.6C19.79,4.34 16.06,3 12,3M12,9C11.62,9 11.25,9 10.88,9.05L14.07,12.25C15.29,12.53 16.43,13.07 17.4,13.8L19.2,11.4C17.2,9.89 14.7,9 12,9Z"/>

                <Setter Property="RenderTransform" >
                    <ScaleTransform ScaleX="10.5" ScaleY="10.5"/>
                </Setter>
            </DataTrigger>
        </Path.Triggers>
    </Path>

【讨论】:

  • 谢谢。所以这不是我可以削减的角落。 ^^
猜你喜欢
  • 1970-01-01
  • 2014-09-19
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-08
  • 1970-01-01
  • 2019-11-08
相关资源
最近更新 更多