WPF数据绑定到日期时间对象列表

时间:2009-10-04 20:33:33

标签: wpf data-binding datatemplate

我有一个组合框,我想绑定到日期时间对象列表,但我想以短时间格式显示日期时间对象。我很确定我需要使用某种形式的数据模板,但我无法弄清楚如何在数据模板中绑定到datetime对象的ToShortTime方法。

有人能指出我正确的方向吗?

3 个答案:

答案 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