繁体   English   中英

TextBlock绑定

[英]TextBlock Binding

我有一个TextBlock,它绑定到我模型的Integer属性。 TextBlock int属性将其计数从0增加到99。我首先在ListView中显示TextBlocks 0-9。

如果有10个以上的TextBlocks,我希望前10个编号为0-9的TextBlocks显示为string.Format 。我可以在WPF中使用string.Format方法来实现此行为。 但是,如果少于10个TextBlock,则应将它们编号为0、1、2和9。

我该如何实现这种行为? 我可以使用MultiBinding Converter吗? 如果是,请帮助我提供样本。

这是代码:

<ListView ItemsSource= "{Binding}"> <!-- Binding to a collection which has the Tag Id property -->
  <Grid x:Name="TagNum_grid" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="1,3,0,0" Grid.Column="1" >
    <TextBlock x:Name="DefaultIDtextblock" Margin="1,0" Text="{Binding Path=TagID}" TextWrapping="Wrap" Foreground="#FFA0A0A0" />
  </Grid>
</ListView>

如前所述,您可以使用MultiBinding ,其中第一个值是标签ID,第二个是元素数。

首先,定义值转换器:

public class MyConverter : MarkupExtension, IMultiValueConverter
{
    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return this;
    }

    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        int tagId = (int)values[0];
        int itemCount = (int)values[1];

        if (itemCount >= 10 && tagId < 10)
        {
            return "0" + tagId;
        }

        return tagId;
    }
}

然后使用上面的转换器绑定值

<ListView ItemsSource="{Binding}">
    <Grid x:Name="TagNum_grid" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="1,3,0,0" Grid.Column="1" >
        <TextBlock x:Name="DefaultIDtextblock" Margin="1,0" TextWrapping="Wrap" Foreground="#FFA0A0A0" >
            <TextBlock.Text>
                <MultiBinding Converter="{local:MyConverter}">
                    <Binding Path="TagID" />
                    <Binding Path="Items.Count" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ListView}" />
                </MultiBinding>
            </TextBlock.Text>
        </TextBlock>
    </Grid>
</ListView>

您不需要MultiValueConverter,一个简单的转换器就足够了。

您需要做的是将集合本身​​绑定到ConverterParameter属性。 现在,当转换器被点击时,您可以检查集合的计数。 如果小于10,则可以让该值通过,否则,只需格式化该值并根据需要添加前导零即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM