1

データグリッドにアイコンを含む列が 1 つあります。このために、プログラムで列に1つのセルテンプレートを追加しました。

var imageFactory = new FrameworkElementFactory(typeof(System.Windows.Controls.Image));
                    imageFactory.SetBinding(System.Windows.Controls.Image.SourceProperty, imageBinding);
                    imageFactory.SetValue(System.Windows.Controls.Image.StretchProperty, Stretch.None);
                    if (config.Font != null)
                    {
                        double height = config.Font.Size;
                        imageFactory.SetValue(FrameworkElement.HeightProperty, height);

                    }
                    var dataTemplate = new DataTemplate { VisualTree = imageFactory };
                    statusColumn.CellTemplate = dataTemplate;
                    view.DataGrid.Columns.Add(statusColumn);

Height プロパティを外部で設定すると、画像のサイズを「高さ」値に変更するのではなく、画像がトリミングされます。

画像の高さを特定の値に設定する方法。提案してください。

4

2 に答える 2

2

これを試して

    double size = 14.0;
    BitmapImage bmp = new BitmapImage(new Uri("MyIcon.ico", UriKind.RelativeOrAbsolute));

    FrameworkElementFactory icon = new FrameworkElementFactory(typeof(Image));
    icon.SetValue(Image.SourceProperty, bmp);
    icon.SetValue(Image.WidthProperty, size);
    icon.SetValue(Image.HeightProperty, size);

更新これを試してください

   Style sBase = (Style)this.Resources["BaseButtonStyle"];
   Style sNew = new Style(typeof(Image), sBase);
   sNew.Setters.Add(new Setter(HeightProperty, 20d));

REFERENCE こちらをご覧ください

于 2013-03-19T08:13:57.333 に答える
0

私は BitmapImage.DecodePixelHeight を使用し、問題を解決しました。:)

bitmapImage = new BitmapImage();
                bitmapImage.BeginInit();
                bitmapImage.StreamSource = memoryStream;
                bitmapImage.DecodePixelHeight = font.Size <= 9 ? font.Size + 2 : font.Size;
                bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
                bitmapImage.EndInit();
                bitmapImage.Freeze();
于 2013-05-16T08:25:25.337 に答える