【发布时间】:2016-04-21 23:49:17
【问题描述】:
我有一个 dataGrid,其中包含借助 DataGridTemplateColumn 技术创建的列。 这是我对 DataGrid (Name = "Dgrv) 感兴趣的列
XAML
<DataGridTemplateColumn Width="40">
<!--="Name"-->
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding TextCell.txtbx}"
TextAlignment="Center" Margin="0, 8, 0, 0"/>
<Canvas Background="Black" Height="1" Margin="5,5,5,0"/>
<TextBlock Text="{Binding OperatorCode}" TextAlignment="Center" Margin="0, 5, 0, 0"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
在我的后端,我得到了下一个代码:
XAML.cs
var list = new List<Contract>();
list.Add(new Contract
{
ID = 1,
CompanyName = "Технабсервис",
HeadName = "Петров\nАлександр\nНиколаевич",
CountryCode = "+7",
OperatorCode = "495",
Date = Convert.ToDateTime("21.02.2012").ToString("dd.MM"), //GetDateTimeFormats('mm, dd'),
Time = "16:39",
Telephones = "(495)123-4567 (общий)",
Comment = ""
});
Dgrv.ItemsSource = list;
这是我的类 Contract.cs
public class Contract
{
public int ID { get; set; }
public string CompanyName { get; set; }
public string HeadName { get; set; }
public string CountryCode { get; set; }
public string OperatorCode { get; set; }
public String Date { get; set; }
public String Time { get; set; }
public String Telephones { get; set; }
public String Comment { get; set; }
public TextCell smth { get; set; }
/*public Dictionary<string, int> PriceFields { get; private set; }
public Dictionary<string, string> RateFields { get; private set; }
public Dictionary<string, string> TypeFields { get; private set; }
public Dictionary<string, string> TicketFields { get; private set; }*/
public Contract()
{
smth = new TextCell();
}
}
最后是我的 TextCell 类(如您所见,我想将 TextBlock 的文本绑定到名为“txtbx”的此类的字段
TextCell.cs
public class TextCell
{
public String txtbx { get; set; }
public TextCell()
{
txtbx = "sdbjshfk";
}
public override string ToString()
{
return txtbx;
}
}
所以,问题是关于这部分代码
<TextBlock Text="{Binding TextCell.txtbx}"
TextAlignment="Center" Margin="0, 8, 0, 0"/>
它根本不工作。我了解,我可以将 TextBlock 的文本绑定到 TextCell 字段本身。在这种情况下将调用 ToString() 方法,但这对我来说还不够。主要是因为这篇文章中描述的情况只是一个例子,我还有更多的情况需要这种类型的绑定。
因此,我们创建了 TextCell 类作为示例,以便了解所需的技术。
【问题讨论】:
-
不应该是
{Binding smth.txtbx}吗? -
我不明白,这怎么可能,但它确实有效。我已经多次尝试过您的变体,但没有奏效。在您发表评论后,我决定再试一次,它奏效了。非常感谢。请告诉我,如何将答案标记为正确答案?
-
我发布了一个答案,试图尽我所能解释事情。您应该能够将其标记为答案。谢谢。
标签: c# wpf templates binding datagrid