2016-07-18 5 views
2

Я с DataGrid, я хотел бы добавить в текст заголовка столбца в каждом значении в ячейкеBind WPF DataGrid Заголовок столбца текста в ячейке Значения

Часть XAML Исходный код является

<Window x:Class="DataGrid_Index.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525" 
     xmlns:cust="clr-namespace:DataGrid_Index" > 
    <Grid> 

     <DataGrid Name="Grid1" AutoGenerateColumns="False" ItemsSource="{Binding MobileList, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True" SelectionUnit="Cell" SelectionChanged="Grid1_SelectionChanged" > 
      <DataGrid.Columns> 
       <!--Column 1--> 
       <DataGridTextColumn Binding="{Binding MobileName}" Header="Name" /> 
       <!--Column 2--> 
       <DataGridTextColumn Binding="{Binding MobileOS}" Header="OS" /> 
      </DataGrid.Columns> 
     </DataGrid> 

    </Grid> 
</Window> 

C# View Модель

public class MobileVM : ViewModel 
{ 
    private ObservableCollection<Mobile> _mobileList = new ObservableCollection<Mobile>(); 
    public ObservableCollection<Mobile> MobileList 
    { 
     get { return _mobileList; } 
     set { _mobileList = value; OnPropertyChanged(); } 
    } 
    public MobileVM() 
    { 
     MobileList = new ObservableCollection<Mobile>() 
     { 
      new Mobile() { MobileName = "iPhone 6", MobileOS = "IOS" }, 
      new Mobile() { MobileName = "Galaxy S6", MobileOS = "Android" }, 
      new Mobile() { MobileName = "Lumina", MobileOS = "Windows" } 
     }; 
    } 
} 

public class Mobile 
{ 
    public string MobileName { get; set; } 
    public string MobileOS { get; set; } 
} 

Я ожидаю OUTPUT

 Name     OS 
_________________________________________ 
    Name: iPhone 6  OS: IOS 
    Name: Galaxy S6  OS: Android 
    Name: Lumina   OS: Windows 

Как связать Column.Header в ячейке? Пожалуйста, помогите мне.

ответ

0

Вы можете добиться того, что с MultiBinding, как это:

<DataGridTextColumn Header="Name" x:Name="NameC"> 
         <DataGridTextColumn.Binding> 
          <MultiBinding StringFormat=" {0}: {1}"> 
           <Binding ElementName="NameC" Path="Header"></Binding> 
           <Binding Path="MobileName"></Binding> 

          </MultiBinding> 
         </DataGridTextColumn.Binding> 
        </DataGridTextColumn> 

StringFormat позволяет еще некоторые настройки.

Надеюсь, что это поможет

Смежные вопросы