WPF DataGridTextColumn头绑定
我有一个代码,其中绑定不起作用WPF DataGridTextColumn头绑定
<DataGridTextColumn Header="{Binding LocalizedText.Task_Toolbar_AddButton}" />
对于按钮:
<Button x:Name="addTaskButton" Click="addTaskButton_Click">
<TextBlock Text="{Binding LocalizedText.Task_Toolbar_AddButton, Mode=OneWay}" />
</Button>
它工作正常,但对于DataGrid标题不会在所有的工作。
查找Josh Smith关于DataContext Spy的博客,其中DataContextSpy类使用Hillberg的Freezable技巧从不在逻辑树中的对象获取对继承上下文的访问权限。 DataContextSpy非常简单,所以在许多场景中它应该是可重用的。
这里是你如何使用它的头文件(我用这一切的时候,不仅DataGrid.Headers):
<DataGrid...
<DataGrid.Resources>
<myNamespaces:DataContextSpy x:Key="dcSpy" DataContext="{LocalizedText}"/>
.......
<DataGridTemplateColumn Header="{Binding Source={StaticResource dcSpy}, Path=DataContext.Task_Toolbar_AddButton}">
编辑: 我似乎无法找到它的任何位置他的博客,也许他把它归档了,所以在这里,我会为你添加它。贴吧,引用它在XAML正如我上面显示,然后用它的DataContext拔出你想要的数据绑定:
public class DataContextSpy : Freezable
{
public DataContextSpy()
{
// This binding allows the spy to inherit a DataContext.
BindingOperations.SetBinding (this, DataContextProperty, new Binding());
}
public object DataContext
{
get { return GetValue (DataContextProperty); }
set { SetValue (DataContextProperty, value); }
}
// Borrow the DataContext dependency property from FrameworkElement.
public static readonly DependencyProperty DataContextProperty = FrameworkElement
.DataContextProperty.AddOwner (typeof (DataContextSpy));
protected override Freezable CreateInstanceCore()
{
// We are required to override this abstract method.
throw new NotImplementedException();
}
}
嗨丹尼斯我很感谢为你的答案。 我在XAML已经代码 '
哦,哎呀,我忘了把绑定在那里,哈哈,对不起:),所以把:DataContext =“{Binding LocalizedText}” – 2012-04-23 15:12:24
头不是在逻辑树... – 2012-04-19 22:26:29