标签: string-formatting

使用具有多个绑定的StringFormat进行Multibinding的较短xaml语法是什么?

对于单个绑定,我们使用:

<TextBlock>
  <TextBlock.Text>
    <MultiBinding StringFormat="{}{0}">
      <Binding Path=EmployeeName/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)

或更短的语法:

<TextBlock 
 Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding Path=EmployeeName}}"/>
Run Code Online (Sandbox Code Playgroud)

现在,如果你有多重绑定:

<TextBlock>
  <TextBlock.Text>
    <MultiBinding StringFormat="{}{0}, {2}">
      <Binding Path="EmployeeName"/>
      <Binding Path="Age"/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)

我想知道,它的短语法是什么?

<TextBlock 
 Text="{MultiBinding StringFormat=\{0\}, Bindings={Binding ??????}"/>
Run Code Online (Sandbox Code Playgroud)

wpf xaml binding string-formatting multibinding

8
推荐指数
1
解决办法
7379
查看次数

WPF DataGrid单元格字符串格式作为样式或模板

我尝试了几种方法来分解WPF DataGrid中的单元格格式(.NET 4提供的格式):

  • 一个数据转换器,
  • 样式中的"StringFormat"绑定属性,
  • 数据模板中的"StringFormat"绑定属性.

我将描述我的尝试,因为它可能会帮助其他人,我希望有人可以给我建议,以改善这些解决方案.请注意,我对WPF相当新...

预期的行为是将单元格字符串格式化为特定类似"1,234,567"的内容以进行显示,但在编辑单元格时应将其格式化为"1234567"(其默认格式).当我尝试使用数据转换器时,我没有找到在编辑时使用默认格式的方法,因此我将精力集中在样式和模板上.

使用样式,DataGridTextColumn的定义如下:

<DataGridTextColumn Header="Price (Style)" SortMemberPath="BILL_PRICE">
    <DataGridTextColumn.ElementStyle>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="Text" Value="{Binding Path=BILL_PRICE, StringFormat={}{0:N0}}"/>
        </Style>
    </DataGridTextColumn.ElementStyle>
    <DataGridTextColumn.EditingElementStyle>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Text" Value="{Binding Path=BILL_PRICE}"/>
            <Setter Property="Padding" Value="0"/>
            <Setter Property="BorderThickness" Value="0"/>
        </Style>
    </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
Run Code Online (Sandbox Code Playgroud)

行为正是预期的.但是,由于绑定,我无法分解这种风格并多次使用它.为了解决分解问题,我使用了DataGridTemplateColumn和数据模板.这是我的DataGridTemplateColumn定义:

<DataGridTemplateColumn Header="Price (Template)" SortMemberPath="BILL_PRICE">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ContentControl Content="{Binding BILL_PRICE}" Template="{StaticResource CurrencyCellControlTemplate}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ContentControl Content="{Binding BILL_PRICE, Mode=TwoWay}" Template="{StaticResource CurrencyCellEditingControlTemplate}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

和ControlTemplate定义:

<ControlTemplate x:Key="CurrencyCellControlTemplate" TargetType="ContentControl">
    <TextBlock Margin="2,0,2,0" Padding="0" TextAlignment="Right">
        <TextBlock.Text>
            <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Content" StringFormat="{}{0:N0}"/> …
Run Code Online (Sandbox Code Playgroud)

wpf datagrid string-formatting datagridtemplatecolumn datagridtextcolumn

8
推荐指数
1
解决办法
1万
查看次数

有哪些优秀的非英语短语有单数和复数形式可用于测试国际化和本地化库?

我一直在研究.NET库来协助应用程序的国际化.它是用C#编写的,名为SmartFormat,在GitHub上是开源的.

它包含多种语言的语法数字规则,可根据模板和语言环境确定正确的单数/复数形式.规则是从Unicode语言复数规则获得的.

翻译具有依赖于数量的单词的短语(例如名词,动词和形容词)时,指定多个表单,格式化程序根据这些规则选择正确的表单.

英语示例:(注意语法几乎相同String.Format)

var message = "There {0:is:are} {0} {0:item:items} remaining.";
var output = Smart.Format(culture, message, items.Count);
Run Code Online (Sandbox Code Playgroud)

我想为许多支持的语言编写单元测试.但是,我只会说英语和西班牙语(两者都有相同的语法编号规则).

有哪些优秀的非英语测试用语可以用于这些单元测试? 我正在寻找类似的短语"There {0:is:are} {0} {0:item:items} remaining.".请注意此示例如何根据数量需要特定的动词和名词.

关于语法的说明:

此库查找:分隔的单词,并根据为语言环境定义的规则选择正确的单词.例如,在波兰语中,"文件"一词有3种复数形式:1"plik",2-4"pliki",5-21"plików".因此,您将在格式字符串中指定所有3个表单:"{0} {0:plik:pliki:plików}".

这些单词通常按从最小可能值到最大值排序,例如"{0:zero:one:two:few:many:other}",由Unicode语言复数规则定义.

这里已经讨论了有关此代码的其他信息:单数/复数单词的本地化 - 语法数字的不同语言规则是什么?

.net c# localization string-formatting internationalization

8
推荐指数
1
解决办法
640
查看次数

格式化包含带前导零的小数点的数字

我想用前导零格式化带小数点的数字.

这个

>>> '3.3'.zfill(5)
003.3
Run Code Online (Sandbox Code Playgroud)

考虑所有数字甚至小数点.python中是否只有一个函数只考虑整个部分?

我只需要格式化不超过五位小数的简单数字.此外,使用%5f似乎考虑尾随而不是前导零.

python decimal-point string-formatting

8
推荐指数
4
解决办法
2万
查看次数

如何在VB.net中将24小时时间转换为12小时为hh:mm AM/PM

所以,假设我有1400,我想将其转换为下午2:00

我尝试了以下方法:

Dim convertedTime As String = DateTime.ParseExact(theTime,"HHmm", Nothing)
Run Code Online (Sandbox Code Playgroud)

它会给我这个:

6/12/2012 02:00:00 PM

我不想要日期部分,我也不需要秒.我需要的只是下午2点

我怎么能实现这个目标?谢谢!

vb.net time string-formatting datetime-conversion

8
推荐指数
1
解决办法
6万
查看次数

如何在matlab中格式化文本输出的复数

我有一个复数,我想使用fprintf命令作为文本输出.我没有看到复数的格式规范.是否有捷径可寻?

使用定点的格式规范仅输出实部.

matlab string-formatting

8
推荐指数
2
解决办法
9499
查看次数

为什么%s在python中对于整数替换比%d更快?

我正在阅读这里提到的例子,我正在看这个例子.我在ipython上运行了一个示例示例,结果是一致的,即"%d"慢于"%s":

In [1]: def m1():
   ...:     return "%d" % (2*3/5)

In [2]: def m2():
   ...:     return "%s" % (2*3/5)

In [4]: %timeit m1()
1000000 loops, best of 3: 529 ns per loop

In [5]: %timeit m2()
1000000 loops, best of 3: 192 ns per loop

In [6]: from dis import dis

In [7]: dis(m1)
  2           0 LOAD_CONST               1 ('%d')
              3 LOAD_CONST               5 (6)
              6 LOAD_CONST               4 (5)
              9 BINARY_DIVIDE       
             10 BINARY_MODULO       
             11 …
Run Code Online (Sandbox Code Playgroud)

python string-formatting

8
推荐指数
1
解决办法
288
查看次数

在字符串格式中,我一次只能替换一个参数吗?

有什么办法我只能在字符串格式中只替换第一个参数吗?像这样:

"My quest is {test}{}".format(test="test")
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

"My quest is test {}
Run Code Online (Sandbox Code Playgroud)

{}我将在稍后更换第二个arg.

我知道我可以创建一个字符串:

"My quest is {test}".format(test="test")
Run Code Online (Sandbox Code Playgroud)

然后将它与剩余的字符串组合并创建新的字符串,但我可以一次性完成吗?

python string-formatting python-3.x

8
推荐指数
2
解决办法
2155
查看次数

Python:String Formatter对齐中心

print('%24s' % "MyString")     # prints right aligned
print('%-24s' % "MyString")    # prints left aligned
Run Code Online (Sandbox Code Playgroud)

如何在中心打印?有快速的方法吗?

我不希望文本位于屏幕的中心.我想这是在市中心 24位.如果我必须手动完成,那么添加相同的数字背后的数学是什么.文本之前和之后的空格?

python string-formatting text-alignment

8
推荐指数
3
解决办法
2万
查看次数

如何在资源文件中使用字符串插值?

我想使用资源文件发送电子邮件.在我的资源文件中,我使用了一个变量"EmailConfirmation",其值为"Hello {userName} ..."

在我的班上我用过:

public static string message (string userName)
{
   return Resource.WebResource.EmailConfirmation
}
Run Code Online (Sandbox Code Playgroud)

问题是返回表示"Hello {userName}"而不是"Hello Toto".

c# variables interpolation resource-files string-formatting

8
推荐指数
1
解决办法
2265
查看次数