2011-06-16 111 views
1

我想在代码中设置一个Image Horizo​​ntalAlignment属性,而不是XAML,但它无法工作:Silverlight中的Horizo​​ntalAlignment不工作

 
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在图像上正常工作...

回答

1

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

img.Stretch = Stretch.None 

事情会按照您的预期行事。

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); 
相关问题