2013-12-09 3 views
0

У меня есть DataGrid и ранее я отображал только изображение/значок в заголовке столбца, используя следующие Style.Отображать как изображение, так и метку в заголовке столбца DataGrid

  <Style TargetType="DataGridColumnHeader" > 
       <Setter Property="ContentTemplate" > 
        <Setter.Value> 
         <DataTemplate > 
          <StackPanel Orientation="Horizontal"> 
           <Image Source="{Binding Converter={StaticResource StrToImageConverter}}" /> 
          </StackPanel> 
         </DataTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 

Я передаю путь изображения в качестве имени столбца в моем DataTable

string colName; // Some file path 
    DataColumn c = new DataColumn(colName) { DataType = typeof(string) }; 
    dt.Columns.Add(c); 

StrToImageConverter и преобразует его в растровый.

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     ImageSource result = null; 
     string path = (string)value; 

     if (!string.IsNullOrEmpty(path)) 
      result = new BitmapImage(new Uri(path)); 

     return result; 
    } 

Но теперь я также должен отображать имя столбца в виде текста вместе со значком. Я могу добавить TextBlock в StackPanel рядом с изображением, но я не уверен, как передавать данные на него или это даже лучший подход.

Любая помощь была бы действительно оценена.

Благодаря

ответ

0

Если ваш основной объект ItemsSource содержит свойство, можно просто связать текст с этим свойством.

Но, как видно из вашего вопроса, вы связываете его с DataTable. Вы можете add another column в DataTable сказать HeaderName и связать с ним -

<StackPanel Orientation="Horizontal"> 
    <Image Source="{Binding Converter={StaticResource StrToImageConverter}}"/> 
    <TextBlock Text="{Binding HeaderName}"/> 
</StackPanel> 
Смежные вопросы