为数据网格中的每一行绑定一个按钮工具提示

时间:2014-03-19 14:23:57

标签: c# wpf data-binding datagrid

我有一个数据网格,第一列中有按钮,用于展开每行下的另一个数据网格。我希望工具提示显示数据网格内的行数。现在我试图获取工具提示但是通过将其与属性绑定来显示一些文本,但是没有显示任何内容。这是我在数据网格中的按钮的xaml:

<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";

2 个答案:

答案 0 :(得分:0)

您需要设置网格ItemSsource属性。这里

<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

答案 1 :(得分:0)

当您以某种方式绑定到DataGrid数据时,可以将DataGrid.ItemsSource设置为某种集合,或者甚至是DataTable。关键是它是一个项集合,这些项的属性或列是绑定到DataGrid中各个列的数据。

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

集合中的每个项目都由DataGrid中的一行表示。如果您希望数据将不同数据绑定到ToolTip 的每一行中的DataGrid属性,则需要为{{{}的每个项目提供属性或列。 1}}集合到数据绑定到。通过这种方式,您可以执行您想要的内容 YourCollection中的数据项具有名为DataGrid的属性或列:

ToolTipDetails