您的位置:首页 > 其它

Silverlight的几个知识点

2010-01-25 15:37 281 查看
首先添加一个Grid

<Grid x:Name="GTest" ShowGridLines="False" SizeChanged="GTest_SizeChanged" >	</Grid>


1. Grid动态添加新的列和行。

this.GTest.RowDefinitions.Add(new RowDefinition() {Height=new GridLength(30) });
this.GTest.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });


2. 为Grid动态添加Border的样式。

Border tempBorder = new Border();
tempBorder.BorderThickness = new Thickness(1);
tempBorder.BorderBrush = new SolidColorBrush(Colors.Red);
tempBorder.SetValue(Grid.ColumnProperty, 1);
tempBorder.SetValue(Grid.ColumnSpanProperty, 2);
this.GTest.Children.Add(tempBorder);


3. 动态添加Button及Button的背景图片。

// Add new button
Button btnNew = new Button();
ImageBrush imageBrush = new ImageBrush();
imageBrush.ImageSource = new BitmapImage(new Uri(@"..\Images\New.gif", UriKind.Relative));
btnNew.Background = imageBrush;
btnNew.Width = 20;
btnNew.Height = 20;
btnNew.SetValue(Grid.ColumnProperty, 0);
btnNew.SetValue(Grid.RowProperty, iContentStart);
btnNew.Click += new RoutedEventHandler(btnNew_Click);
titlePanel.Children.Add(btnNew);


4. 鼠标移动事件。

Rectangle rec = new Rectangle();
rec.Stroke = new SolidColorBrush(Colors.Black);
rec.Fill = new SolidColorBrush(Colors.Orange);
rec.MouseLeftButtonDown +=new MouseButtonEventHandler(rec_MouseLeftButtonDown);
rec.MouseLeftButtonUp += new MouseButtonEventHandler(rec_MouseLeftButtonUp);
rec.MouseMove += new MouseEventHandler(rec_MouseMove);

// Mouse Down Method
private void rec_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
mousePosition = e.GetPosition(null);
trackingMouseMove = true;

if (null != element)
{
element.CaptureMouse();
element.Cursor = Cursors.Hand;
}

}

// Mouse Move Method
private void rec_MouseMove(object sender, MouseEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
if (trackingMouseMove)
{
double deltaV = e.GetPosition(null).Y - mousePosition.Y;
double deltaH = e.GetPosition(null).X - mousePosition.X;
double newTop = deltaV + (double)element.GetValue(Canvas.TopProperty);
double newLeft = deltaH + (double)element.GetValue(Canvas.LeftProperty);

element.SetValue(Canvas.TopProperty, newTop);
element.SetValue(Canvas.LeftProperty, newLeft);

mousePosition = e.GetPosition(null);
}
}
// Mouse Move Method
private void rec_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;

Canvas.SetTop(element, 15);

trackingMouseMove = false;
element.ReleaseMouseCapture();

mousePosition.X = mousePosition.Y = 0;
element.Cursor = null;

if (pop != null)
{
pop.IsOpen = false;
}

// Update the datebase
}


5, Grid的形状改变的时候,去改变Grid的类似那些Canvas控件的形状。

// First Remove the control in the Grid and ReBuild those controls that have been removed
private void GTest_SizeChanged(object sender, SizeChangedEventArgs e)
{
List<UIElement> controlsToRemove = new List<UIElement>();
int RowsCount = this.GTest.RowDefinitions.Count;

for (int i = 2; i < RowsCount; i++)
{
controlsToRemove = (from pControl in GTest.Children
where (i == (int)pControl.GetValue(Grid.RowProperty))
select pControl).ToList<UIElement>();

for (int j = 0; j < controlsToRemove.Count; j++)
{
GTest.Children.Remove(controlsToRemove[j]);
}

this.GTest.RowDefinitions.Remove(this.GTest.RowDefinitions[2]);
}

BuildTR(postCollection);
}


6,利用WebService异步操作后台数据。

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
BuildTRYear();
BuildTRMonth();

BlogWebServiceSoapClient client = new BlogWebServiceSoapClient();
client.GetPostsCompleted +=new EventHandler<GetPostsCompletedEventArgs>(client_GetPostsCompleted);
client.GetPostsAsync();
}

private void client_GetPostsCompleted(object sender, GetPostsCompletedEventArgs e)
{
if (e.Error == null)
{
postCollection = e.Result;
BuildTR(postCollection);
}
}


7,怎样去创建一个PopUp对话框,并设置他的位置和样式,以下代码是我写的一个popup类,用户就可以New一个,然后传入参数

contentTxt就是popup要显示的内容,xOffsite,yOffsite距离父控件的位置,canvas,父控件,这个popup不具有通用行,但是很好改,就可以去适合自己的popup对话框。

public class ContentPop
{
private string content = string.Empty;

private bool isAdd = true;

public bool IsAdd
{
get { return isAdd; }
set { isAdd = value; }
}

public string Content
{
get { return content; }
set
{
content = value;
if (thisPopUp.Child != null)
{
thisPopUp.Child = null;
AddContent(content);
}
}
}
private bool isOpen = false;

public bool IsOpen
{
get { return isOpen; }
set
{
isOpen = value;
thisPopUp.IsOpen = isOpen;
}
}
private Popup thisPopUp = null;

public Popup ThisPopUp
{
get { return thisPopUp; }
}
private double xOffsite;

public double XOffsite
{
get { return xOffsite; }
set
{
xOffsite = value;
thisPopUp.HorizontalOffset = xOffsite;
}
}
private double yOffsite;

public double YOffsite
{
get { return yOffsite; }
set
{
yOffsite = value;
thisPopUp.VerticalOffset = yOffsite;
}
}

private Canvas parantCanvas;

public Canvas ParantCanvas
{
get { return parantCanvas; }
set
{
parantCanvas = value;
parantCanvas.Children.Add(thisPopUp);
}
}
private Border border = null;

public ContentPop(string content,double xOffsite,double yOffsite,Canvas canvas)
{
thisPopUp = new Popup();

AddContent(content);

canvas.Children.Add(thisPopUp);
thisPopUp.HorizontalOffset = xOffsite;
thisPopUp.VerticalOffset = xOffsite;

thisPopUp.IsOpen = true;

this.content = content;
this.xOffsite = xOffsite;
this.yOffsite = yOffsite;
this.isOpen = true;
}

private void AddContent(string content)
{
if (thisPopUp.Child == null)
{
border = new Border();
border.BorderBrush = new SolidColorBrush(Colors.Black);
border.BorderThickness = new Thickness(0);

StackPanel panel1 = new StackPanel();

TextBlock textblock1 = new TextBlock();
textblock1.Text = content;
textblock1.Opacity = 100;
panel1.Children.Add(textblock1);
border.Child = panel1;

thisPopUp.Child = border;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: