我有一个组合框,我想绑定到日期时间对象列表,但我想以短时间格式显示日期时间对象。我很确定我需要使用某种形式的数据模板,但我无法弄清楚如何在数据模板中绑定到datetime对象的ToShortTime方法。
有人能指出我正确的方向吗?
答案 0 :(得分:4)
假设您使用的是.NET 3.0或3.5 SP1,您只需使用StringFormat指定格式,例如:
<TextBlock Text="{Binding Source={x:Static sys:DateTime.Now}, StringFormat='{}{0:t}'}" />
将以短时间格式显示当前日期时间('t'标准日期时间格式修饰符,与调用DateTime.Now.ToString(“t”)完全相同。)
编辑:如果您已经在使用DateTime作为DataContext的数据模板中,只需使用:
<TextBlock Text="{Binding StringFormat='{}{0:t}'}" />
答案 1 :(得分:1)
您可以在绑定上设置Converter属性。实现IValueConverter以更改字符串。 IValueConverter的MSDN docs实际上以此为例。
答案 2 :(得分:0)
有一个名为:
的属性var NAME = "My Presentation";
var deck = SlidesApp.create("NAME");
var presentation = deck;
function getMyFiles() {
var labels = [];
var myFolders = DriveApp;
var AfolderIter = myFolders.getFoldersByName("A");
var Afolder = AfolderIter.next();
var AfolderIter = Afolder.getFiles();
while(AfolderIter.hasNext()) {
var Afile = AfolderIter.next();
var AfileId = Afile.getId();
labels.push(AfileId);
}
var BfolderIter = myFolders.getFoldersByName("B");
var Bfolder = BfolderIter.next();
var BfolderIter = Bfolder.getFiles();
while(BfolderIter.hasNext()) {
var Bfile = BfolderIter.next();
var BfileId = Bfile.getId();
labels.push(BfileId);
}
Logger.log(labels);
return labels;
}
function addImageSlide(fileId) {
var slide = presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK);
var image = slide.insertImage(DriveApp.getFileById(fileId));
var imgWidth = image.getWidth();
var imgHeight = image.getHeight();
var pageWidth = presentation.getPageWidth();
var pageHeight = presentation.getPageHeight();
var newX = pageWidth/2. - imgWidth/2.;
var newY = pageHeight/2. - imgHeight/2.;
image.setLeft(newX).setTop(newY);
}
function main() {
var fileIds = getMyFiles();
Logger.log(fileIds);
var [title, subtitle] = deck.getSlides()[0].getPageElements();
title.asShape().getText().setText(NAME);
subtitle.asShape().getText().setText("Subtitle for Presentation");
for(var i = 0; i< fileIds.length; i++){
addImageSlide(fileIds[i]);
}
}
在这里您可以照常提供Stringformat。为此,无需数据模板。
Combobox.ItemStringFormat