??xml version="1.0" encoding="utf-8" standalone="yes"?> CZ代码如下:ToolTip 控g CZ:
控g用于昄面元素的附加解释信?像 html 中的某些元素的alt属?
<Grid x:Name="LayoutRoot" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="20,0,20,0" Width="300" Height="180">
<Grid.RowDefinitions>
<RowDefinition MinHeight="30"></RowDefinition>
<RowDefinition MinHeight="30"></RowDefinition>
<RowDefinition MinHeight="30"></RowDefinition>
<RowDefinition MinHeight="30"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Height="14" Grid.Row="0" Grid.Column="0">用户?</TextBlock>
<TextBlock Height="14" Grid.Row="1" Grid.Column="0">用户密码:</TextBlock>
<TextBlock Height="14" Grid.Row="3" Grid.Column="0">密匙:</TextBlock>
<TextBox Width="120" Height="24" Grid.Row="0" Grid.Column="1" ToolTipService.ToolTip="注意区分大小?></TextBox>
<PasswordBox Width="120" Height="24" Grid.Row="1" Grid.Column="1"></PasswordBox>
<Button Click="Button_Click" Width="120" Height="24" Grid.Row="2" Grid.Column="1" Content="获取密匙" ToolTipService.ToolTip="单击按钮获取有效地开发授权密?>
</Button>
</Grid>
<ToolTipService.ToolTip>
<ToolTip Content="单击按钮获取有效地开发授权密?></ToolTip>
</ToolTipService.ToolTip>
</Button>
看了以上代码?x)发现都是?ToolTipService q个ToolTip的管理类来获取ToolTip对象, 而ToolTipService c?q有两个附加属? Placement (ToolTip昄位置) ?PlacementTarget (ToolTip依照该属性指定的元素q行定位) , 当用代码ؓ(f)大量元素l定 ToolTip 时很有用
2. Popup
Popup 对象的作用是在现有Silverlight内容之上昄Popup.Child属性中指定的内宏Vl上?当点?yn)L钮时为提交过E模拟一个Loading效果, 当然q个Loading你等到天荒地老也不会(x)完成的,该Loading效果的按钮事件代码如下ToolTip 对象
CZ:
using System.Windows.Controls.Primitives;
..
private void Button_Click(object sender, RoutedEventArgs e)
{
//创徏文本
TextBlock textblock = new TextBlock();
textblock.Text = "Loading
";
textblock.Width = 120;
textblock.Height = 24;
textblock.FontSize = 18;
//创徏遮蔽
Grid grid = new Grid();
SolidColorBrush brushcolor = new SolidColorBrush();
brushcolor.Color = Colors.White;
grid.Background = brushcolor;
grid.Opacity = 0.8;
grid.Width = Application.Current.Host.Content.ActualWidth;
grid.Height = Application.Current.Host.Content.ActualWidth;
grid.Children.Add(textblock);
//创徏Popup
Popup p = new Popup();
//为Popup指定内容
p.Child = grid;
//昄Popup
p.IsOpen = true;
}
3. ChildWindow
提供可在父窗口之上显C的一个窗口ƈ且阻止与父窗口的交互, 实际上就是一个增强版?Popup , 多了一个如上例中Loading那样的遮蔽层,我们上例中的Loading效果,改ؓ(f)使用 ChildWindow 实现代码如下:ChildWindow 对象
CZ:
private void Button_Click(object sender, RoutedEventArgs e)
{
SolidColorBrush brushcolor = new SolidColorBrush();
brushcolor.Color = Colors.White;
ChildWindow cw = new ChildWindow();
cw.HasCloseButton = false;
cw.FontSize = 18;
cw.Opacity = 0.8;
cw.OverlayBrush = brushcolor;
cw.Content = "Loading
";
cw.Show();
}
实际?ChildWindow 对象 q可以包含一个标题栏和一个关闭按? 只不qloading不需? 我们用了而已
4. MessageBox
MessageBoxZ?js 中的模态窗口来昄信息, q是以上例进行扩? 比如该功能暂时关闭时,可以如下方式昄:MessageBox 对象
CZ
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("该功能暂时关?L(fng)后再?/span>");
}
]]>
功能
定义只读Q新增,~辑三块模块
定义模板的目的是更好的复用和提高XAML代码的可L和可维护性,也可以更好的分工合作。下面是一个归q关pȝl护界面?nbsp;
主要有表_多个表体l成Qؓ(f)了把所有操作尽量在一个页面中完成Q表头用一个DataFormI间Q表体用DataGrid和DataForml合实现?
而DataForm有三U状态分别是只读Q显CZ可编辑)Q编辑,新增。因此我们需要ؓ(f)q三U模板来控制每个控g的布局和属性,比如只读状态下I间的IsReadOnly为True,~辑状态下Q关键字字段的IsReadOnly为True,其他字段可以~辑Q编辑状态用选择控g方便输入Q新增状态下Q对于关键字D和必填字段需要用_体字体昄Q默认)或其他Ş式提醒操作用Q这都需要在不同的模板中定于?
提示Q布局使用Data Filed控gpȝ默认Ҏ(gu)DataForm控g的状态改变Data Field~辑状?
下图是编辑状态下的布局
自定义代码选择控gQ快速输入控?
最常见的单机放大镜弹出所有记录选择后返回页面或是在一个TextBox中输入一个代码(料号Q自动带出名Uͼ单位Q单L(fng)信息实现快速输入。如果用asp.net需要写需要JavaScript代码Q而用Silverlight则非常容易就能实现?
通过把需要带出的字段l定到自定义控g上?
Silverlight代码
属性绑定代?
下面是实C码,名称快速{换的实现Q显C名UC存代?
定义一个Converter,和一个代码组的数据源
字段输入验证Q唯一性验证)
通过对DomainService生成的metadata class的字D|加属性进行验证。ؓ(f)了更好维护对验证数据的提CZ息,可以使用资源文g保存比如Q验证支持特定属性和正则表达式,自定义验?
唯一性验?
需要对提示用户输入的信息重复了
注意Q这里需要添加一个编译条Ӟ不然无法~译q去?
System.Windows.Controls BeginEditQDataGridq入~辑状态?/p>
CancelEditQ取消DataGrid的编辑状态?/p>
CollapseRowGroupQ闭合DataGrid的行分组?/p>
CommitEditQ确认DataGrid的编辑完成?/p>
ExpandRowGroupQ展开DataGrid的行分组?/p>
GetGroupFromItemQ从具体Item中得到分l?/p>
ScrollIntoViewQ滚动DataGrid视图?/p>
AlternatingRowBackgroundQ获取或讄一个笔L(fng)来描lDataGrid奇数行的背景?/p>
AreRowDetailsFrozenQ获取或讄一个值用来判断是否冻l每行内容的详细信息?/p>
AreRowGroupHeadersFrozenQ获取或讄一个值用来判断是否冻l分l行的头部?/p>
AutoGenerateColumnsQ获取或讄一个值用来判断是否允许自动生成表列?/p>
CanUserReorderColumnsQ获取或讄一个值用来判断是否允许用户重新排列表列的位置?/p>
CanUserSortColumnsQ获取或讄一个值用来判断是否允许用h列对表中内容q行排序?/p>
CellStyleQ获取或讄单元格的样式?/p>
ColumnHeaderHeightQ获取或讄列头的高度?/p>
ColumnHeaderStyleQ获取或讄列头的样式?/p>
ColumnsQ获取组件中包含所有列的集合?/p>
ColumnWidthQ获取或讄列宽?/p>
CurrentColumnQ获取或讄包含当前单元格的列?/p>
CurrentItemQ获取包含当前单元格且与行绑定的数据V?/p>
DragIndicatorStyleQ获取或讄当拖曛_头时的样式?/p>
DropLocationIndicatorStyleQ获取或讄呈现列头时的样式?/p>
FrozenColumnCountQ获取或讄ȝ列的个数?/p>
GridLinesVisibilityQ获取或讄|格U的昄形式?/p>
HeadersVisibilityQ获取或讄行头及列头的昄形式?/p>
HorizontalGridLinesBrushQ获取或讄水^|格U的W刷?/p>
HorizontalScrollBarVisibilityQ获取或讄水^滚动条的昄样式?/p>
IsReadOnlyQ获取或讄DataGrid是否为只诅R?/p>
MaxColumnWidthQ获取或讄DataGrid的最大列宽?/p>
MinColumnWidthQ获取或讄DataGrid的最列宽?/p>
RowBackgroundQ获取或讄用于填充行背景的W刷?/p>
RowDetailsTemplateQ获取或讄被用于显C详细部分的内容的模板?/p>
RowDetailsVisibilityModeQ获取或讄一个值用以判定行详细部分是否昄?/p>
RowGroupHeaderStylesQ获取呈现行分组头部的样式?/p>
RowHeaderStyleQ获取或讄呈现行头的样式?/p>
RowHeaderWidthQ获取或讄行头的宽度?/p>
RowHeightQ获取或讄每行的高度?/p>
RowStyleQ获取或讄呈现行时的样式?/p>
SelectedIndexQ获取或讄当前选中部分的烦引倹{?/p>
SelectedItemQ获取或讄与当前被选中行绑定的数据V?/p>
SelectedItemsQ获取与当前被选中的各行绑定的数据们的列表(ListQ?/p>
SelectionModeQ获取或讄DataGrid的选取模式?/p>
VerticalGridLinesBrushQ获取或讄垂直|格U的W刷?/p>
VerticalScrollBarVisibilityQ获取或讄垂直滚动条的昄样式?/p>
BeginningEditQ发生于一个单元格或行q入~辑模式之前?/p>
CellEditEndedQ发生于一个单元格~辑已被认或取消?/p>
CellEditEndingQ发生于一个单元格正在l束~辑时?/p>
CurrentCellChangedQ发生于一个单元格成ؓ(f)当前单元格时?/p>
PreparingCellForEditQ发生于在DataGridTemplateColumn下的单元D入编辑模式时?/p>
SelectionChangedQ发生于当SelectedItem或SelectedItems属性值改变时?br />
Silverlight DataGridlg所在命名空?/strong>Q?/p>
Silverlight DataGridlg常用Ҏ(gu)Q?/strong>
Silverlight DataGridlg常用属性:(x)
Silverlight DataGridlg常用事gQ?/strong>
]]>
lg的常用属性:(x)
AutoCommitQ获取或讄一个值来表示当当前项被改变时已被~辑的数据项是否被提交?/span>
AutoEditQ获取或讄一个值来表示DataForm是否应当被永久置于编辑模式?/span>
AutoGenerateFieldsQ获取或讄一个值来表示DataForm是否自动生成数据域集合?/span>
CancelButtonContentQ获取或讄取消按钮的内宏V?/span>
CancelButtonStyleQ获取或讄取消按钮的样式?/span>
CommandButtonsVisibilityQ获取或讄一个值用来表C在DataForm面板上的命o按钮是否可见?/span>
CommitButtonContentQ获取或讄提交按钮的内宏V?/span>
CommitButtonStyleQ获取或讄提交按钮的样式?/span>
CurrentIndexQ获取或讄当前的索引倹{?/span>
DataFieldStyleQ获取或讄数据域的具体样式?/span>
DescriptionViewerPositionQ获取或讄一个值用来表CZ当前数据域相关的描述内容的位|?/span>
EditTemplateQ获取或讄?span>DataForm处于~辑模式时的~辑模板?/span>
HeaderQ获取或讄DataForm的头部?/span>
HeaderTemplateQ获取或讄DataForm的头部的头模ѝ?/span>
HeaderVisibilityQ获取或讄一个值用来表C?span>DataForm的头部是否可见?/span>
IsEmptyQ获取一个值用来表C控g是否能显CZ个数据项?/span>
IsItemChangedQ获取一个值用来表C当前数据项是否被更攏V?/span>
IsItemValidQ获取一个值用来表C当前数据项是否被有效?/span>
IsReadOnlyQ获取一个值用来表C?span>DataFormlg是否处于只读状态?/span>
LabelPositionQ获取或讄一个值用来表CZ当前数据域相关的标签的位|?/span>
ModeQ获取一个值用来表C?span>DataFormlg是否处于只读、编辑或新增目状态?/span>
NewItemTemplateQ获取或讄一个项模板当添加新数据Ҏ(gu)?/span>
ReadOnlyTemplateQ获取或讄一个项模板?span>DataFormlg处于只读状态时?/span>
ValidationSummaryQ获取验证结果汇怅R?/span>
ValidationSummaryStyleQ获取或讄验证l果汇ȝ具体样式?/span>
lg的常用方法:(x)
AddNewItemQ添加一个新数据V?/span>
BeginEditQ开始当前项的编辑模式?/span>
CancelEditQ取消当前项的编辑模式?/span>
CommitEditQ提交更攏V?/span>
DeleteItemQ删除当前项?/span>
FindNameInContentQ在DataForm中寻找一个指定名U的对象?/span>
ValidateItemQ验证当前项是否有效?/span>
lg常用事gQ?/span>
AddingNewItemQ当d新数据项时发生?/span>
AutoGeneratingFieldQ当一个数据域自动生成时发生?/span>
BeginningEditQ编辑启动时发生Q当AutoEdit属性ؓ(f)trueӞ该状态不能被取消?/span>
ContentLoadedQ当DataForm的内容加载完毕时发生?/span>
ContentLoadingQ当DataForm的内容快要加载完毕时发生?/span>
CurrentItemChangedQ在当前Ҏ(gu)变时发生?/span>
DeletingItemQ当一个数据项正在被删除时发生?/span>
EditEndedQ在一个数据项~辑l束时发生?/span>
EditEndingQ在一个数据项~辑正在l束时发生?/span>
ValidatingItemQ在一个数据项正在被验证时发生?/span>