2014-03-19 4 views
0

У меня есть datagrid, в котором есть кнопки в первом столбце, которые расширяют другой datagrid под каждой строкой. Я хочу, чтобы всплывающая подсказка показывала количество строк, находящихся внутри datagrid. Прямо сейчас я пытаюсь просто получить всплывающую подсказку, однако, чтобы отобразить некоторый текст, привязывая его к свойству, но ничего не отображается. Вот моя XAML для кнопки внутри DataGrid:Привязка кнопки всплывающей подсказки для каждой строки в datagrid

<Control:DataGridTemplateColumn> 
       <Control:DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <Button Click="ShowHideDetailsClick" Foreground="Black" 
         ToolTip="{Binding ToolTipDetails}">+</Button> 
        </DataTemplate> 
       </Control:DataGridTemplateColumn.CellTemplate> 
</Control:DataGridTemplateColumn> 

C#:

public string ToolTipDetails 
{ 
     get { return _toolTip; } 
     set 
     { 
      if (_toolTip != value) 
      { 
       _toolTip = value; 
       OnPropertyChanged("ToolTipDetails"); 
      } 
     } 
} 

protected virtual void OnPropertyChanged(string propertyName) 
{ 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 
} 

и в моем случае окна загрузки, я устанавливаю это:

ToolTipDetails = "ChildTrades: 0"; 

ответ

0

Вы должны установить свойство ItemSource сетки. Здесь

<DataGrid x:Name="DataGrid" AutoGenerateColumns="False" CanUserAddRows="False"> 
     <DataGrid.Columns> 
      <DataGridTemplateColumn Header="Data"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <Button Foreground="Black" ToolTip="{Binding ToolTipDetails}" Click="ShowHideDetailsClick" FontSize="16">+</Button> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

Затем в коде позади я сделал

List<Data> items = new List<Data> { new Data() { ToolTipDetails = "Tip one here" }, new Data() { ToolTipDetails = "Tip two here" } }; 
DataGrid.ItemsSource = items; 

enter image description here

+0

Спасибо! @ user3416818 – kknaguib

0

Когда данные связываются с DataGrid, так или иначе, вы установите DataGrid.ItemsSource в коллекцию некоторых или, возможно, DataTable. Дело в том, что это набор элементов, а свойства или столбцы этих элементов - данные, привязанные к различным столбцам в DataGrid.

<DataGrid ItemsSource="{Binding YourCollection}" /> 

Каждый элемент в коллекции представлен одной строкой в ​​DataGrid. Если вы хотите, чтобы данные привязывали разные данные к объекту ToolTipв каждой строке DataGrid, вам необходимо предоставить свойство или столбец для каждого элемента коллекции YourCollection для привязки данных. Таким образом, вы могли бы сделать то, что вы хотите где элемент данных в строке DataGrid имеет свойство или столбец с именем ToolTipDetails:

<Control:DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <Button Click="ShowHideDetailsClick" Foreground="Black" 
     ToolTip="{Binding ToolTipDetails}">+</Button> 
    </DataTemplate> 
</Control:DataGridTemplateColumn.CellTemplate> 
Смежные вопросы