Programmaticaly如何在MultiBinding StringFromat中提供连续的任意数量的空白字符?

时间:2018-02-22 07:08:28

标签: c# .net wpf string-formatting multibinding

请检查以下代码段:

<TextBox x:Name="TxtBox_CommandInfo"  Style="{DynamicResource MetroTextBox}" IsReadOnly="True" Controls:TextBoxHelper.Watermark="This is a textbox" HorizontalAlignment="Left" Margin="0,236,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="154" Width="780" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto">
        <TextBox.Text>
            <MultiBinding StringFormat="{}{0}      {1}        {2} {3}&#x20;{4} {5}    {6}          {7}          {8}        {9}        {10}&#x0a;{11}">
                <Binding  Path="No" />
                <Binding  Path="SelectedType" />
                <Binding  Path="IgnoreSignature"/>
                <Binding  Path="IgnoreRelString"/>
                <Binding  Path="DirectDL"/>
                <Binding  Path="LegacySC" />
                <Binding  Path="SelectedDVName"/>
                <Binding  Path="SelectedHCName"/>
                <Binding  Path="SelectedSCName"/>
                <Binding  Path="SCRelease"/>
                <Binding  Path="DALName"/>
                <Binding  Path="PreviousLogs"/>
            </MultiBinding>
        </TextBox.Text>
    </TextBox>

每当我想格式化绑定参数之间的空格时,我就不得不对连续的空白字符数进行硬编码。

  • 使用&#x20;(空白代码),我们可以用编程方便/方便方式(使用棘手的代码)格式化字符串,而不是硬编码(输入)重复字符(我们想要的连续空格数。)。

我的假设如下:

<MultiBinding StringFormat="{}{0}[&#x20;,4]{1}[&#x20;,8]{2}{3}{4}[&#x20;,6]{5}{6}[&#x20;,10]{7}{8}{9}{10}&#x0a;{11}"

  • 因此,在WPF / XAML MultiBinding StringFormat下有任何有效的机制,为给定的字符或字符集提供“ 应该生成多少个连续字符或多少个字符重复< / em> ?“

手段而不是像这样输入所需的空格:

<MultiBinding StringFormat="{}{0} {1} {2}" />

替代/编程/方便但假定的机制(提供我们想要的空格数),如下所示:

<MultiBinding StringFormat="{}{0}[Character/s,Number of Repetition]{1}[Character/s,Number of Repetition]{2}" /> <!-- Assumed code like --> <MultiBinding StringFormat="{}{0}[&#x20,8]{1}[&#x20,10]{2}" />

谢谢!

1 个答案:

答案 0 :(得分:0)

你可以添加一个空格参数并填充它:

<MultiBinding StringFormat="{}{0}{12,5}{1}{12,5}{2}{12,1}{3}{12,1}{4}{12,1}{5}{12,4}{6}{12,8}{7}{12,8}{8}{12,8}{9}{12,4}{10}&#x0a;{11}">
    <Binding Path="No" />
    <Binding Path="SelectedType" />
    <Binding Path="IgnoreSignature"/>
    <Binding Path="IgnoreRelString"/>
    <Binding Path="DirectDL"/>
    <Binding Path="LegacySC" />
    <Binding Path="SelectedDVName"/>
    <Binding Path="SelectedHCName"/>
    <Binding Path="SelectedSCName"/>
    <Binding Path="SCRelease"/>
    <Binding Path="DALName"/>
    <Binding Path="PreviousLogs"/>
    <Binding Path="SomeBindingPathThatDoesNotExist" FallbackValue=" "/>
</MultiBinding>

{12}将是您的值(后备值即空格),您可以使用{12,x}

填充它

更好的解决方案是填充每个绑定。这为每个绑定提供了一个固定的大小(不添加恒定数量的空格),但它通常是你想要的:

<MultiBinding StringFormat="{}{0,10}{1,10}{2,8}(etc.)">
    <Binding Path="No" />
    <Binding Path="SelectedType" />
    <Binding Path="IgnoreSignature"/>
    <Binding Path="IgnoreRelString"/>
    <Binding Path="DirectDL"/>
    <Binding Path="LegacySC" />
    <Binding Path="SelectedDVName"/>
    <Binding Path="SelectedHCName"/>
    <Binding Path="SelectedSCName"/>
    <Binding Path="SCRelease"/>
    <Binding Path="DALName"/>
    <Binding Path="PreviousLogs"/>
</MultiBinding>