DateTime的StringFormat不适用于MultiBinding - c#

我有这个代码:

<Label>
    <Label.Content>
        <TextBlock>
            <TextBlock.Text>
                <MultiBinding StringFormat="{} created on {0} by">
                    <Binding Path="CreationDate" StringFormat="{}{0:dd/MM/yyyy}" />
                </MultiBinding>
            </TextBlock.Text>
        </TextBlock>
    </LabeledLabel.Content>
</Label>

OUTPUT

我总是得到这个created on 21/09/2014 00:00:00 by

我尝试了StringFormat="d",但是也没有用。

我的代码有什么问题?

参考方案

您只有一个Binding Path,因此您只会得到日期和时间。基本上,您需要为您的人员数据类型添加一个Binding元素。应该更像这样:

<Label>
    <Label.Content>
        <TextBlock>
            <TextBlock.Text>
                <MultiBinding StringFormat="{} created on {0:dd/MM/yyyy} by {1}">
                    <Binding Path="CreationDate" />
                    <Binding Path="SomeEmployeeObject.Name" />
                </MultiBinding>
            </TextBlock.Text>
        </TextBlock>
    </LabeledLabel.Content>
</Label>

请注意,您还可以使用DateTime StringFormat属性设置MultiBinding.StringFormat,而不是在第一个Binding对象上添加另一个。您还需要将{1}添加到MultiBinding.StringFormat的末尾,以便输出第二个(与人相关的)值。

有关更多信息,请参见MSDN上的MultiBinding Class页。

更新>>>

我不明白为什么将StringFormat属性放在MultiBinding元素上与第一个元素相比有不同的行为

它没有...我可以把它留在那里,但我将其移开了,因为您已经在使用StringFormat。在StringFormat上使用MultiBinding属性实际上与使用string.Format方法相同。使用该方法,这等效于您在XAML中拥有的方法:

string.Format("created on {0:dd/MM/yyyy} by ", someDate);

这相当于我在您的XAML中输入的内容:

string.Format("created on {0:dd/MM/yyyy} by {1}", someDate, someEmployee.Name);

希望您现在可以看到区别。

Div单击与单选按钮相同吗? - php

有没有一种方法可以使div上的click事件与表单环境中的单选按钮相同?我只希望下面的div提交值,单选按钮很丑代码输出如下:<input id="radio-2011-06-08" value="2011-06-08" type="radio" name="radio_date&#…

故障排除“警告:session_start():无法发送会话高速缓存限制器-标头已发送” - php

我收到警告:session_start()[function.session-start]:无法发送会话缓存限制器-标头已发送(错误输出开始如果我将表单数据提交到其他文件进行处理,则可以正常工作。但是,如果我将表单数据提交到同一页面,则会出现此错误。请建议<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0…

将谓词<T>转换为Func <T,bool> - c#

我有一个包含成员Predicate的类,希望在Linq表达式中使用该类:using System.Linq; class MyClass { public bool DoAllHaveSomeProperty() { return m_instrumentList.All(m_filterExpression); } private IEnumerable&…

jQuery和Gridview更新面板不起作用 - c#

我必须按照某些给定条件实现gridview的闪烁:gridview row blinking based on some conditions我能够成功实现它,但是随后我被要求在5秒钟内自动刷新gridview,为此我使用了ajax更新面板和计时器,但随后出现如下新的JavaScript错误:码: <form id="form1" …

Asp.net发送信息表单到页面 - c#

我正在尝试使用弹出窗口中的新信息更新旧页面。到目前为止,我尝试过将结果保存在会话中Session["Data"] = DLvrijecampingplaatsen.SelectedItem; 然后当它达到Page_Load时,将其重新加载回旧页面if (Session["Data"] != null) { LBkies…