我知道之前已经问过这个问题,但是"以前的"答案似乎对我没什么影响......
我已经在我的应用程序中实现了多语言的功能,因此我必须将DataGrid列的标头绑定到DataContext.
我在DataContext中使用一个字典(在下面的例子中称为Text)来存储文本,并且绑定可以与文本块,按钮等一起使用.
<TextBlock Text="{Binding Text[Name], FallbackValue='Name'" />
Run Code Online (Sandbox Code Playgroud)
但是,我无法使用它来处理DataGrid列的Header属性.
我在某处读到,我需要为列/标题编写一个模板来实现这一点,但我也无法解决这个问题.
在我的Silverlight 3用户控件中,我显示了一个基本的DataGrid控件.我需要以编程方式生成列,如下所示:
Style headerStyle = (Style)Resources["ColumnHeaderStyle"];
DataGridTextColumn col = new DataGridTextColumn();
col.HeaderStyle = headerStyle;
dataGrid.Columns.Add(col);
Run Code Online (Sandbox Code Playgroud)
样式定义如下:
<Style x:Name="ColumnStyle" x:Key="ColumnHeaderStyle"
TargetType="prim:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Loaded="StackPanel_Loaded">
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Data}" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
我想将标题的数据上下文设置为"标题"对象(具有"名称"和"数据"属性,这些属性在DataTemplate中引用).不幸的是,我无法在其他地方使用StackPanel_Loaded事件,因为当用户启动列拖放操作时也会调用事件处理程序.
设置DataGrid列标题的DataContext的正确方法是什么?
我正在尝试使用以下代码将DataColumn Header绑定到DynamicResource.
<Window.Resources>
<sys:String x:Key="HeaderText">Header Text</sys:String>
</Window.Resources>
<Grid>
<tk:DataGrid>
<tk:DataGrid.Columns>
<tk:DataGridTextColumn Header="{DynamicResource HeaderText}" Width="100"/>
</tk:DataGrid.Columns>
</tk:DataGrid>
</Grid>
Run Code Online (Sandbox Code Playgroud)
但由于一些奇怪的原因,列标题仍为空.然而,StaticResource效果很好.你能帮我弄清楚如何将Header属性绑定到某些DynamicResource.