【问题标题】:Binding a button tooltip for every row in the datagrid为数据网格中的每一行绑定一个按钮工具提示
【发布时间】:2014-03-19 14:23:56
【问题描述】:

我有一个数据网格,在第一列中有按钮,这些按钮在每一行下展开另一个数据网格。我希望工具提示显示数据网格内的行数。现在,我正在尝试获取工具提示,但是通过将其与属性绑定来显示一些文本,但是没有显示任何内容。这是我的数据网格内按钮的 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";

【问题讨论】:

    标签: c# wpf data-binding datagrid


    【解决方案1】:

    您需要设置网格 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;
    

    【讨论】:

      【解决方案2】:

      当您以某种方式将数据绑定到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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 2012-06-09
        • 2012-05-21
        • 1970-01-01
        • 2012-08-16
        • 2020-07-20
        相关资源
        最近更新 更多