【发布时间】:2010-08-05 03:59:33
【问题描述】:
我想在代码中执行以下 xaml 的等效操作,但我不知道如何获取该文本块元素:
<local:DayOfTheWeekColumn
...
<local:DayOfTheWeekColumn.Header>
<TextBlock
Text="{Binding ...},
ToolTip="{Binding ...} />
</local:DayOfTheWeekColumn.Header>
</local:DayOfTheWeekColumn>
DayOfTheWeekColumn 是 DataGridTextColumn 的子类。我可以很容易地获得 Header 并设置它的内容,现在我想在代码中设置 ToolTip,想办法做到这一点就是我在上面的 xaml 中的做法。
干杯,
浆果
编辑 =========
到目前为止,这是 DayOfTheWeekColumn 的代码。 xaml 中的 TextBlock 是 Header 的可视化树的一部分,而不是我想保留在 xaml 中的东西。我确实想在代码中访问它的工具提示,所以我可以在那里设置它。
我认为应该在列 Header 上有一个 Children 属性,我可以访问它来查找 TextBlock,但还没有找到。
public class DayOfTheWeekColumn : DataGridTextColumn
{
public static readonly DependencyProperty DowDateProperty = DependencyProperty.RegisterAttached(
"DowDate", typeof (DateTime), typeof (DayOfTheWeekColumn), new PropertyMetadata(OnDateChanged));
public DateTime DowDate
{
get { return (DateTime)GetValue(DowDateProperty); }
set { SetValue(DowDateProperty, value); }
}
private static void OnDateChanged(DependencyObject target, DependencyPropertyChangedEventArgs e) {
var col = (DataGridTextColumn) target;
var date = (DateTime) e.NewValue;
col.Header = date.ToString(Strings.ShortDayOfWeekFormat);
//col.Header.ToolTip = "If Only It Were so Easy!!" <==============
}
public DayOfTheWeekColumn() {
Width = 60;
CanUserReorder = false;
CanUserResize = false;
CanUserSort = false;
}
}
【问题讨论】:
标签: wpf silverlight xaml