Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.forms 通过绑定启用/禁用效果_Xamarin.forms - Fatal编程技术网

Xamarin.forms 通过绑定启用/禁用效果

Xamarin.forms 通过绑定启用/禁用效果,xamarin.forms,Xamarin.forms,在Xamarin表单中,可以在XAML中添加效果,如下所示: <Label ... > <View.Effects> <effects:MyGlowEffect Radius="10" Color="White" /> </View.Effects> </Label> <Label ... IsVisible="{Binding EnableEffect}" > <View.E

在Xamarin表单中,可以在XAML中添加效果,如下所示:

<Label ... >
    <View.Effects>
        <effects:MyGlowEffect Radius="10" Color="White" />
    </View.Effects>
</Label>
<Label ... IsVisible="{Binding EnableEffect}" >
    <View.Effects>
        <effects:MyGlowEffect Radius="10" Color="White" />
    </View.Effects>
</Label>

<Label ... IsVisible="{Binding EnableEffect, Converter={StaticResource InverseBooleanConverter}}" />

更新:

因为这是我自己的自定义效果,所以应该通过添加自定义参数并将其绑定到ViewModel中的布尔值(如中所示)来解决。(AFAIK,必须使用“attached”属性,才能使用绑定效果属性,属性似乎不会响应动态更改。)


但是,如果有一些“通用”的方法可以做到这一点,例如启用/禁用我没有源代码的效果,我更愿意将其作为一种解决方案。

您对触发器的看法完全正确,您可以修改我的示例中现有的类似项,或者添加一个新的类似项,我想您需要:

        <Label ...>

            <View.Effects>
                <effects:MyGlowEffect Radius="10" Color="White" />
            </View.Effects>

        <Label.Triggers>

          <DataTrigger Binding="{Binding EnableEffect TargetType="Label" Value="true">
            <Setter Property="effects:MyGlowEffect.Radius" Value="11" />
            <Setter Property="effects:MyGlowEffect.Color" Value="Red" />
          </DataTrigger>

  </Label.Triggers>

 </Label>


在我的效果上,我对一个布尔值做了类似的事情,所做的是将该布尔值绑定到我的C#代码中的一个属性。然后根据不同的条件或触发器,我改变了我的效果中的布尔值,这基本上消除了效果的效果。我希望我说的有道理@Toolmakersteve,如何在代码中使用ViewModel?如果你能直接使用绑定,我认为尼克的回答可以解决你的问题。@CherryBu MSFT-请阅读我对尼克回答的新评论。假设有一个没有任何属性的效果来打开/关闭它。我想知道是否有一个视图的“IsVisible=False”的等价物,只是为了效果。因此,不会调用效果的
onatached
,因此效果将不起任何作用。如果没有“常规”方法“分离”任何效果(不编写代码将其从视图层次结构中物理删除),那么我将接受Nick的回答-并使用特定于效果的属性。如果无法访问效果源,您能想出任何方法来启用/禁用效果吗?(在我目前的情况下,我确实有源,但我想知道未来的效果。)我不明白,在本例中,我们不需要效果源,它对任何效果都是可行的。您演示的是如何将效果的属性设置为值。我要问的是如何完全禁用一个效果,就好像它不在那里(没有附加)。如果效果具有可用于“关闭”的属性,则可以使用此技术。(在我给出的示例中,可能将“半径”设置为0或“颜色”设置为“透明”会起作用。因此,如果这是唯一已知的方法,我会将其标记为答案。)但假设效果不是设计为打开/关闭的?我想知道是否有一种通用的技术可以用来禁用任何效果?可能没有,我只是想问一下。。
        <Label ...>

            <View.Effects>
                <effects:MyGlowEffect Radius="10" Color="White" />
            </View.Effects>

        <Label.Triggers>

          <DataTrigger Binding="{Binding EnableEffect TargetType="Label" Value="true">
            <Setter Property="effects:MyGlowEffect.Radius" Value="11" />
            <Setter Property="effects:MyGlowEffect.Color" Value="Red" />
          </DataTrigger>

  </Label.Triggers>

 </Label>