显示基于其他DataGrid列的ToolTip

时间:2012-09-07 02:24:21

标签: wpf

我有两个DataGrids: Question 我需要做的是当鼠标在绿色区域上方时,工具提示显示“lower_limit”, 当鼠标位于红色区域上方时,工具提示显示“upper_limit”。

但重要的是,工具提示需要根据列[operation_type]和第二个网格中的相应值来确定要显示的值。

这可能吗?

非常感谢。

在此处发布xaml代码:

<DataGrid Name="dgoperations"  AutoGenerateColumns="False" Background="#FFECE9D8" BorderBrush="#FFECE9D8" Grid.Row="1" MinRowHeight="30" IsReadOnly="True" Grid.ColumnSpan="2">
                            <DataGrid.Columns>
                                <DataGridTextColumn Binding="{Binding  Path=operation_sequence,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Header="operation_sequence" Width="sizetoheader" />
                                <DataGridTextColumn Binding="{Binding  Path=operation_name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Header="operation_name" Width="sizetoheader" />
                                <DataGridTextColumn Binding="{Binding  Path=operation_type,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Header="operation_type" Width="sizetoheader" />
                                <DataGridTemplateColumn Header="parm1" >
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBox Text="{Binding parm_1}" ToolTip="Somthins display here. Values depand on value in column[operation_type]" />
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>
                            </DataGrid.Columns>
                        </DataGrid>

1 个答案:

答案 0 :(得分:0)

您可以使用IValueConverter实现;如果你不熟悉,有一个基本的例子,说明如何在链接中使用这些。基本思路是,将数据对象传递给转换器,然后执行逻辑并返回正确的工具提示文本。

您的实现应该是这样的。

<强> XAML

<TextBox Text="{Binding parm_1}" 
    ToolTip="{Binding Converter={StaticResource MyTooltipConverter}}"
/>

<强>资源

<local:MyTooltipConverter x:Key="MyTooltipConverter" />

<强>代码

public class Converter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        MyDataType dataRow = value as MyDataType;
        string tooltip;

        // set tooltip to the correct value based on the dataRow
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}