Silverlight Horizo​​ntalAlignment不起作用

时间:2011-06-16 21:16:29

标签: silverlight silverlight-4.0

我正在尝试在代码中设置Image Horizo​​ntalAlignment属性,而不是XAML,但它无法工作:

Grid grid = new Grid();
grid.ColumnDefinitions.Add(new ColumnDefinition());
grid.ColumnDefinitions.Add(new ColumnDefinition());

Image img = new Image() { Source = new Uri("myImage.png") };
Grid.SetColumn(img, 1);
img.HorizontalAlignment = HorizontalAlignment.Right;

grid.Children.Add(img);

此代码应该创建一个包含单行和两列的网格,然后将图像添加到第二列并一直锚定到右侧,但图像保持锚定在第二列的左侧

这怎么可能? VerticalAlignment在图像上正常工作......

2 个答案:

答案 0 :(得分:1)

你的“图片”系列似乎错过了什么,但这似乎不是问题。我认为问题在于网格会改变其元素的大小,因此图像似乎保持整个“单元”大小。给你的图像一些小的宽度和高度,看看会发生什么。

或检查一下:

Grid grid = new Grid();
grid.ColumnDefinitions.Add(new ColumnDefinition());
grid.ColumnDefinitions.Add(new ColumnDefinition());

Image img = new Image() 
    { Source = new BitmapImage(new Uri("SaveIcon.PNG", UriKind.Relative)) };
img.Width = 32D;
img.Height = 32D;

Grid.SetColumn(img, 1);
img.HorizontalAlignment = HorizontalAlignment.Right;

grid.Children.Add(img);

LayoutRoot.Children.Add(grid);

答案 1 :(得分:1)

Image.Stretch属性的默认值为Stretch.Uniform。听起来你想要它设置为Stretch.None

 img.Stretch = Stretch.None

然后事情将按照您的预期行事。