数据网格单元格的工具提示中的图像

时间:2016-06-27 12:44:41

标签: c# wpf xaml datagrid tooltip

我需要一个带有一些图像的datagrid列,对于我需要在工具提示中看到的每个单元格,图像越大。 datagrid绑定在MyOBjects的ObsevarbleCollection上,MyImage和MyBigImage是MyObject的属性。使用XAML,有工作代码:

<DataGrid.Columns>
    <DataGridTemplateColumn>
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <Image Source="{Binding MyImage}" >
                    <Image.ToolTip>
                        <ToolTip >
                            <StackPanel>
                                <Image Source="{Binding MyBigImage}" />
                            </StackPanel>
                        </ToolTip>
                    </Image.ToolTip>
                </Image>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid.Columns>

但我需要在c#端移动代码。所以我试过这段代码:

DataGridTemplateColumn col1 = new DataGridTemplateColumn();
FrameworkElementFactory factoryImg = new   FrameworkElementFactory(typeof(Image));
Binding b1 = new Binding("MyImage");
b1.Mode = BindingMode.TwoWay;
factoryImg.SetValue(Image.SourceProperty, b1);

DataTemplate ttTemplate = new DataTemplate(typeof(StackPanel));
FrameworkElementFactory spFactory = new     FrameworkElementFactory(typeof(StackPanel));
spFactory.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);
FrameworkElementFactory imgHolder = new     FrameworkElementFactory(typeof(Image));
Binding b2 = new Binding("MyBigImage");
b2.Mode = BindingMode.TwoWay;
imgHolder.SetValue(TextBlock.DataContextProperty, this.pieces);
imgHolder.SetBinding(Image.SourceProperty, b2);
spFactory.AppendChild(imgHolder);

ttTemplate.VisualTree = spFactory;

ToolTip tt = new System.Windows.Controls.ToolTip();
tt.ContentTemplate = ttTemplate;
factoryImg.SetValue(TextBlock.ToolTipProperty, tt);

DataTemplate cellTemplate1 = new DataTemplate();
cellTemplate1.VisualTree = factoryImg;
col1.CellTemplate = cellTemplate1;
grdDataItems.Columns.Add(col1);
cellTemplate1.Seal();

在列的datagrid单元格中,我从“MyImage”中看到了正确的图像,但在单元格的工具提示中,我总是看到“MyBigImage”集合的第一个元素的图像。 我该如何解决这个问题?

此致

0 个答案:

没有答案