• Silverlight控件词条学习


    如果你看过MSDN中Silverlight关于控件的词条

    本文可以跳过了。如果你是“功利”派。可以浏览一下。

    控件内容模型 

    1控件内容模型 

    1.1文本控件

    控件

    内容类型

    内容属性

    TextBlock

    Text

    TextBlock.Text

    TextBlock.Inlines

    TextBox

    Text

    TextBox.Text

    RichTextBox

    Text

    RichTextBox.Blocks

    PasswordBox

    Text

    PasswordBox.Password

     

    TextBlock 继承自 frameworkElement

    里面的行是

    Text 属性接受 StringInlines 属性接受InlineCollection

    InlineCollection 接受 Inline 对象 

    TextTrimming 枚举

    描述当文本溢出其包含框的边缘时如何修整文本。

     

    RichTextBox

    方案

    建议控件

    显示无格式纯文本。

    TextBlock

    显示格式化文本、段落、超链接或内联图像。

    RichTextBox

    输入或编辑纯文本,例如在某一窗体中。

    TextBox

    输入或编辑格式化文本、段落、超链接或内联图像。

    RichTextBox

    编辑要求格式、段落、超链接或内联图像的文档、文章或博客。

    RichTextBox

    应用字符或段落格式。

    RichTextBox

     

     

     TabNavigation

    KeyboardNavigationMode

     

    Local

    只有 Tab 索引位于此容器内时,才会在本地子树上考虑这些索引。

     

    Cycle

    当到达容器内的第一个或最后一个键盘导航位时,

    焦点返回到第一个或最后一个键盘导航位。

     

    Once

    容器及其所有子元素整个只能接收焦点一次。

     

    TextBlock 

     控件是在基于 Silverlight 的应用程序中用于显示文本的主要元素。如果您需要显示包含必填字段或验证错误指示器的另一控件的标题,请使用 Label 控件。 

     

    1.2显示单个元素和标题的控件

    Header 属性属于 Object 类型,因此与 Content 属性一样,

    对标题可以包含的内容也没有限制。 

    1.3显示项集合的控件

    ListBoxComboBoxTreeView 和 TabControl 都是项控件.

    ListBoxItemComboBoxItemTreeViewItem 和 TabItem 是对应的项容器 

    可以通过

    Items  和  ItemsSource 来确定内容

    @1

    ComboBox cb1 = new ComboBox();

    cb1.Items.Add("Item 1");

    cb1.Items.Add("Item 2");

    cb1.Items.Add("Item 3");

    LayoutRoot.Children.Add(cb1);

    @2

    ObservableCollection<Uri> Uris = new ObservableCollection<Uri>();

    Uris.Add(new Uri("http://www.contoso.com"));

    Uris.Add(new Uri("http://www.tailspintoys.com"));

    Uris.Add(new Uri("http://www.cohowinery.com/"));

     

    UriBox1.ItemsSource = Uris

    @3

    也可以通过将 ItemsSource 属性设置为 Binding 对象以及设置控件的 DataContext 来绑定到集合 

    ObservableCollection<Uri> Uris = new ObservableCollection<Uri>();

    Uris.Add(new Uri("http://www.contoso.com"));

    Uris.Add(new Uri("http://www.tailspintoys.com"));

    Uris.Add(new Uri("http://www.cohowinery.com/"));

    UriBox2.DataContext = Uris;

     

    XAML

     

    <ComboBox ItemsSource="{Binding}" x:Name="UriBox2" />


    AutoCompleteBox 

    是一个特殊控件,它组合一个用于放置用户输入的文本框和一个在下拉项中显示的项控件 

    DataGrid

     这个比较泛滥。

     

    显示一个项集合和一个标头的控件

    HeaderedItemsControl 

    表示包含一个标题和项集合的控件 

     

    显示用户界面元素的控件 

    PanelGridCanvas 和 StackPanel 

     

    2控件初始化和布局 

    1构造控件

    2设置控件属性

    3应用了 Style 属性(显式样式)。 

    4应用了 Style 属性(generic.xaml 中的默认样式)。 

    5Loaded 事件发生。 

    6应用了模板(根据模板创建控件的可视化元素)。 

    7调用了OnApplyTemplate方法。 

    8代码中控件可视化元素变得可供操纵。 

    9 调用了MeasureOverride方法。 

    10调用了ArrangeOverride方法。 

    11引发LayoutUpdated事件。 

     

     

    使用控件和对话框 

    1 DataGrid 

    默认键盘行为
    在内部表格内有对快捷键丰富的支持

    你可以凭用word表格和平常用计算机的直觉

    来操作。

    比如:

    Home

    将焦点移到当前行的第一个单元格。

    End

    将焦点移到当前行的最后一个单元格。

     

    F2

    如果对于当前列 DataGrid.IsReadOnly 属性是 false,并且DataGridColumn.IsReadOnly 属性是 false,则使当前单元格进入单元格编辑模式。

    Enter

    提交对当前单元格和行的所有更改,并将焦点移到在当前单元格正下方的单元格。如果焦点位于最后一行,则提交所有更改,而不移动焦点。

     包括上下左右等等

    http://msdn.microsoft.com/zh-cn/library/cc838112(v=VS.95).aspx 

    默认的鼠标的行为

    鼠标操作

    说明

    单击某一未选择行

    使单击的行成为当前行。

    单击当前行中的某一单元格

    将单击的单元格置于编辑模式下。

    拖动某一列标头单元格

    如果对于当前列 DataGrid.CanUserReorderColumns 属性是 true,并且DataGridColumn.CanUserReorder 属性是 true,则移动该列将其放入新的位置。

    拖动某一列标头分隔符

    如果对于当前列 DataGrid.CanUserResizeColumns 属性是 true,并且DataGridColumn.CanUserResize 属性是 true,则调整该列的大小。

    单击某一列标头单元格

    如果对于当前列 DataGrid.CanUserSortColumns 属性是 true,并且DataGridColumn.CanUserSort 属性是 true,则对该列排序。

    单击已排序的某一列的标头将颠倒该列的排序方向。

    单击多列标头的同时按 Shift 键将以单击的顺序按多列排序。

    Ctrl+单击某一行

    如果 SelectionMode 设置为 Extended,则修改非连续多行选择。

    如果该行已被选择,则取消选择该行。

    Shift+单击某一行

    如果 SelectionMode 设置为 Extended,则修改连续多行选择。

    单击行组标题展开器按钮

    展开或折叠组。

    双击行组标题

    展开或折叠组。

     为datagrid 绑定数据


    <Grid.Resources>

    <DataTemplate x:Key="CBTemplate">

    <!----指定key 以调用--->

            <Grid>

                <Grid.ColumnDefinitions>

                    <ColumnDefinition />

                    <ColumnDefinition />

                </Grid.ColumnDefinitions>

                <Image Grid.Column="0" Width="50" Height="50" 

                    Source="{Binding Photo}" Stretch="Fill"/>

                <TextBlock Grid.Column="1" Text="{Binding Title}" 

                    Margin="10" HorizontalAlignment="Left" FontSize="20"/>

            </Grid>

        </DataTemplate>

    </Grid.Resources>

    使用

    <ComboBox x:Name="CB1" VerticalAlignment="Top" HorizontalAlignment="Left" 

    ItemTemplate="{StaticResource CBTemplate}" ItemsSource="{Binding}" />

    C#代码中

    LayoutRoot.DataContext = MyThings;

     

     

    更改行详细信息部分的可见性

     dataGrid1.RowDetailsVisibilityMode =

     DataGridRowDetailsVisibilityMode.VisibleWhenSelected;

     

     

    成员名称

    说明

     

    Collapsed

    不针对任何行显示行详细信息部分。

     

    Visible

    针对所有行显示行详细信息部分。

     

    VisibleWhenSelected

    仅针对选定行显示行详细信息部分。

     

    防止在水平方向滚动行详细信息部分

    this.dataGrid1.AreRowDetailsFrozen = bool值

     获取或设置一个值,该值指示行详细信息部分是在显示区域的宽度处保持固定,还是可以水平滚动。

    如何:自定义 DataGrid 控件中自动生成的列 

    只需要自定义处理

     AutoGeneratingColumn 事件 。通过引用DataGridAutoGeneratingColumnEventArgs

    来改变包括行头。模板等等。

    if (e.Column.Header.ToString() == "Name")

    e.Column.Header = "Task";

     

    if (e.PropertyName == "DueDate")

    {

        // Create a new template column.

        DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();

        templateColumn.Header = "Due Date";

        templateColumn.CellTemplate = (DataTemplate)Resources["dueDateCellTemplate"];

        templateColumn.CellEditingTemplate = (DataTemplate)Resources["dueDateCellEditingTemplate"];

        templateColumn.SortMemberPath = "DueDate";

     

    取消生成列

    if (e.PropertyType == typeof(bool))

    e.Cancel = true;

     

    想要自定义输出还有另外一种简单的方式

    就是在数据实体那里(model)

    对其属性写Display 指定其中文名 等等

    你可以尝试创建一个WCF RIA  service

    在其 meata 文件中 更改 其显示名。

    如果你之前了解 MVC 验证那些 。应该知道我说的

    是什么了。

    使用 PagedCollectionView 对数据进行分组、排序和筛选 

     

    对话框概述 

    1消息框

    您可以选择使用 Show(String, String, MessageBoxButton)方法,为消息框指定一个标题和一个取消按钮。消息框是一种模式对话框,这意味着用户在响应消息框之前将无法继续。您可以使用从 Show 方法返回的 MessageBoxResult 对象,确定用户是单击了“确定还是“取消并作出相应的反应。 

    2通用对话框 

    针对常用对话框的安全限制

    出于安全目的,如果 Silverlight 应用程序为沙盒应用程序,则文件和打印对话框必须是用户启动的对话框。这意味着,您必须从用户启动的操作(例如,按钮的单击事件处理程序)显示它们。如果您尝试从非用户启动的代码显示一个对话框,则将发生 SecurityException。当您将 Visual Studio 调试器用于某一对话框时,如果您在对话框创建和对话框显示之间设置一个断点,则将发生 SecurityException。由于用户启动的限制,这是预期的行为。如果您在调用 ShowDialog 后设置一个断点,则不引发异常。

    打开文件对话框

    http://msdn.microsoft.com/zh-cn/library/system.windows.controls.openfiledialog.filterindex(v=VS.95).aspx 

    保存文件对话框

     SaveFileDialog sfd;

    private void SaveButton_Click(object sender, RoutedEventArgs e)

    {

        sfd = new SaveFileDialog();

        sfd.Filter = "Video Files (.wmv) | *.wmv";

     

        bool? result = sfd.ShowDialog();

        if (result == true)

            MessageBox.Show("File saved to" + sfd.SafeFileName);

     

    }

     

    打印对话框 

    // Create a print document.

        pd = new System.Windows.Printing.PrintDocument();

     

        // Show the print dialog.

        pd.Print();


    自定义对话框  

    ChildWindow

      显示  show

      可以通过 DialogResult 返回结果

    弹出控件

    Popup p = new Popup();

    p.IsOpen = true;

     ======================


    作者:撞破南墙
    出处:http://www.cnblogs.com/facingwaller/
    关于作者:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Java中Date日期字符串格式的各种转换
    Redis集群搭建与简单使用
    Java中的Redis应用
    java的linux命令
    Lucene全文检索引擎
    设置Xshell中支持中文
    Java并发Fork-Join框架原理解析
    java线程
    Django-路由层
    Django简介
  • 原文地址:https://www.cnblogs.com/facingwaller/p/1798835.html
Copyright © 2020-2023  润新知