DataGridのHeaderにBindすると"System.Windows.Data.Binding"が表示されて困ったので対処したときのメモ。
バインドするデータ
MainWindowViewModel.cs
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace SilverlightApplication4
{
public class MainWindowViewModel
{
public string Header1
{
get {return "Test1" ; }
}
public string Header2
{
get {return "Test2" ; }
}
public string Header3
{
get {return "Test3" ; }
}
}
}
DataGridを持つ画面。右列が困った例。
左列がその対策
MainPage.xaml
<UserControl x:Class="SilverlightApplication4.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:my="clr-namespace:SilverlightApplication4"
xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
xmlns:dataprimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<UserControl.DataContext>
<my:MainWindowViewModel x:Name="vm"></my:MainWindowViewModel>
</UserControl.DataContext>
<Grid x:Name="LayoutRoot" Background="White">
<data:DataGrid>
<data:DataGrid.Columns>
<data:DataGridTextColumn>
<data:DataGridTextColumn.HeaderStyle>
<Style TargetType="dataprimitives:DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="{Binding Header1}" VerticalAlignment="Center" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</data:DataGridTextColumn.HeaderStyle>
</data:DataGridTextColumn>
<data:DataGridTextColumn Header="Test2"></data:DataGridTextColumn>
<data:DataGridTextColumn Header="Test3"></data:DataGridTextColumn>
<data:DataGridTextColumn Header="{Binding Header1}"></data:DataGridTextColumn>
</data:DataGrid.Columns>
</data:DataGrid>
</Grid>
</UserControl>