【问题标题】:xaml conditional StringFormatxaml 条件字符串格式
【发布时间】:2017-04-20 02:22:27
【问题描述】:

我想使用“有条件”价格格式制作binding。

更准确地说,如果另一个属性在true:显示不带百分比的价格,如果是在false,则显示带百分比的价格。有没有办法用 xaml 处理这种情况,或者我应该在我的代码隐藏代码中创建一个字符串价格属性?

【问题讨论】:

  • 我可以想到另外两个解决方案 - 第一个是 ValueConverter,您将条件作为命令参数传递。第二个是使用触发器,您可以根据条件设置StringFormat。我认为这取决于你喜欢什么。 IMO 没有不正确的方法来解决这个问题(只要您努力保持一致性)。
  • 谈论 MVVM 对应的(项目?)视图模型中的一个简单属性就可以了。我经常有正常的财产(例如double Value)伴随着这样的逻辑(string ValueText)。
  • @Sinatr 是的,我会继续使用这个解决方案

标签: c# xaml data-binding binding


【解决方案1】:

您可以像这样使用DataTrigger WPF DataBinding with an conditional expression。对于其他格式的值,您可以使用不同的Converters。

例如:

<UserControl.Resources>
    <converters:ToPercentage x:Key="ToPercentage"/>
</UserControl.Resources>

<TextBox>
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=AnotherProperty}" Value="True">
                    <Setter Property="Text" Value="{Binding Path=Price}"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=AnotherProperty}" Value="False">
                    <Setter Property="Text" Value="{Binding Path=Price, Converter={StaticResource ToPercantage}}"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2014-07-30
    • 2020-05-02
    • 2016-03-01
    • 2021-03-30
    相关资源
    最近更新 更多