为什么{x:Null}不再是UWP中样式设置器中的有效值?

时间:2015-09-29 23:31:03

标签: xaml windows-store-apps uwp

跟进this question后,为什么{x:Null}不再是Setter.Value的有效选项?

将此代码放入UWP应用程序的资源字典中:

<Style x:Key="MyList"
        TargetType="ListView">
    <Setter Property="Transitions" 
            Value="{x:Null}"/>
</Style>

并在任何ListView中使用它:

<ListView Style="{StaticResource MyList}"/>

您的应用会崩溃。这也是一个令人讨厌的崩溃,它会在你的调试器中没有正确破坏应用程序。

此外,设计师抱怨灾难性的失败:

enter image description here

我知道将值设置为{x:Null}是有效的。如果您直接设置<ListView Transitions="{x:Null}"/>,那么它可以正常工作......正如预期的那样。

那么......风格设定者怎么了? ......关心解释,微软?是否至少有另一种方法?

2 个答案:

答案 0 :(得分:3)

这真的是一种奇怪的行为,总的来说因为你解释了直接设置为null的作品而且风格没有。我找到的唯一选择就是设置一个明确的过渡集合:

<Page.Resources>
<Style x:Key="MyList" TargetType="ListView">
    <Setter Property="Transitions" >
        <Setter.Value>
            <TransitionCollection></TransitionCollection>
        </Setter.Value>
    </Setter>
    <Setter Property="DataContext" Value="{x:Null}"/>
</Style>

我设置了可以设置为null的DataContext示例,它表示相同的错误,但编译并运行。

我知道这不是最好的解决方案,但它是一个明确的transitioncollection的解决方法。

答案 1 :(得分:0)

in this quiestion 空值内,一个模板 i've answered您可以找到更多答案

<Color x:Key="BgNull"></Color>
<Style x:Key="L2" TargetType="TextBox">
  <Setter Property="Background" Value="{StaticResource BgNull}"/>
</Style>