gpt4 book ai didi

c# - XAML 中设置属性的顺序是什么?

转载 作者:行者123 更新时间:2023-11-30 22:59:15 24 4
gpt4 key购买 nike

我有一个 TextBlock,它有两个属性(TextForeground)绑定(bind)到同一个 ViewModel 属性。

两者都有转换器。其中一个转换器检查 Text 属性并在值为 NaN 时返回“破折号”。另一个检查该值是否高于、低于或等于零,并相应地将前景设置为不同的颜色。

XAML 示例:

<TextBlock>

<TextBlock.Text>
<Binding Path="AvgDistance" StringFormat="{}{0:N1}"
Converter="{x:Static converter:ValueToDash.Instance}"/>
</TextBlock.Text>

<TextBlock.Foreground>
<MultiBinding Converter="{x:Static converter:ValueToColor.Instance}">
<Binding Path="AvgDistance"/>
<Binding ElementName="currentPeriod" Path="IsChecked" />
</MultiBinding>
</TextBlock.Foreground>

</TextBlock>

现在我需要在 ValueToColor 转换器之前触发 ValueToDash 转换器,但反之亦然。

Foreground 属性似乎总是​​先设置,然后才设置 Text 属性。

为什么会这样?是否可以颠倒设置顺序?

最佳答案

您不应该依赖于设置属性的顺序。

您可以改为向您的 MultiBinding 添加另一个绑定(bind),该绑定(bind)绑定(bind)到 TextBlockText 属性:

<TextBlock>

<TextBlock.Text>
<Binding Path="AvgDistance" StringFormat="{}{0:N1}"
Converter="{x:Static converter:ValueToDash.Instance}"/>
</TextBlock.Text>

<TextBlock.Foreground>
<MultiBinding Converter="{x:Static converter:ValueToColor.Instance}">
<Binding Path="AvgDistance"/>
<Binding ElementName="currentPeriod" Path="IsChecked" />
<Binding Path="Text" RelativeSource="{RelativeSource Self}"/>
</MultiBinding>
</TextBlock.Foreground>

</TextBlock>

ValueToColor 转换器将在 Text 属性设置为某个新值时(再次)调用。

关于c# - XAML 中设置属性的顺序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52331809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com