XAML常用控件2


這節繼續講一些xaml中的常用控件。

布局控件

除了我們之前講過的Grid,StackPanel,Border布局控件,xaml中還有如下幾個布局控件:

Canvas:使用這個布局,可以通過坐標來控制子控件的顯示。當把控件放到Canvas中,這個控件會被附加上Canvas.X和Canvas.Y屬性,我們可以根據這兩個屬性,來指定控件的坐標,單位是像素。wpf和WinForm中XY軸的定義是一樣的,都是從程序的左上角作為原點,原點到右上角這一條線是X軸,原點到左下角這一條線是Y軸。

DockPanel:使用這個布局,控件會自動靠在DockPanel的某一條邊,通過其附加在控件上的DockPanel.Dock這個屬性來指定停靠在那一條邊,這個屬性是個枚舉值:Top,Left,Right,Bottom。DockPanel它自身有一個非常重要的bool值屬性:LastChildFill,當這個屬性為True時,最后一個添加在該布局控件中的控件會自動填滿剩余空間,即使為其賦了DockPanel.Dock值,也會被無視,該屬性默認就是True,如果開發時有特殊需求自行更改為False即可。

WarpPanel:這個布局跟StackPanel很相像,它是流式布局,同樣是使用Orientation屬性來控制子控件的排列,但是比StackPanel更強大的功能是當控件不能在一行或者一列排開時,它會自另起一行或一列,

列表項控件

Menu:這個控件專用於菜單項的顯示,使用其屬性ItemsSource綁定后台一個集合或數組,或者使用MenuItem以硬編碼的形式來填充一個個菜單項,MenuItem的Header屬性用來控制菜單項的顯示文字,該控件除了有click這樣的一般事件外,還有用於響應選中的Checked和Unchecked事件,以及控制選中事件是否執行的IsCheckable的屬性(該屬性默認為False),請看下面一段代碼:

<Menu >
    <MenuItem Header="菜單項1"  IsCheckable="True" Checked="MenuItem_Checked" Unchecked="MenuItem_Unchecked"/>
    <MenuItem Header="菜單項2" />
    <MenuItem Header="菜單項3" />
    <MenuItem Header="菜單項4" /> 
    <MenuItem Header="菜單項5" /> 
</Menu>

對應后台C#事件處理器代碼為:

private void MenuItem_Checked(object sender, RoutedEventArgs e)
{
    MessageBox.Show("菜單1被選中了");
}

private void MenuItem_Unchecked(object sender, RoutedEventArgs e)
{
    MessageBox.Show("菜單1取消選中");
}

程序運行時,當我點擊菜單項1時會彈出MessageBox框提示“菜單1被選中了”,取消選中時會提示“菜單1取消選中”,效果如下:

ListBox:這個控件是個使用頻率很高的控件,用於顯示后台一個數組或者集合數據,同樣的也是使用其屬性ItemsSource與后台進行數據綁定,或者使用ListboxItem以硬編碼的形式填充數據,請看代碼:

<ListBox>
    <ListBoxItem>列表項1</ListBoxItem>
    <ListBoxItem>列表項2</ListBoxItem>
    <ListBoxItem>列表項3</ListBoxItem>
    <ListBoxItem>列表項4</ListBoxItem>
    <ListBoxItem>列表項5</ListBoxItem>
</ListBox>

而且,ListBoxItem可以容納控件,比如Button,CheckBox,都可以往里填充:

<ListBox> 
    <ListBoxItem>
        <Button Content="我是按鈕"/>
    </ListBoxItem> 
    <ListBoxItem>
        <CheckBox IsChecked="True"/>
    </ListBoxItem> 
</ListBox>

在這種情況下,ListBoxItem標簽就可以省略了,系統會自動進行封裝:

<ListBox> 
    <Button Content="我是按鈕"/>
    <CheckBox IsChecked="True"/>
</ListBox>

  

DataGrid控件

這個控件就是一個表格,跟數據庫中的表是類似的,並且它的職責就是用來顯示數據庫中的數據,下面先看個實例代碼:

<DataGrid ItemsSource="后台數據源">
    <DataGrid.Columns>
        <DataGridTextColumn Header="我是文本"/>
        <DataGridCheckBoxColumn Header="我是選擇框"/>
        <DataGridComboBoxColumn Header="我是下拉框"/>
        <DataGridHyperlinkColumn Header="我是超鏈接"/>
        <DataGridTemplateColumn Header="我是自定義列" Width="1*">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Content=""/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid> 

該控件同樣是使用ItemsSource來綁定數據,我們使用該控件時要先通過DataGrid.Columns來定義列的數量及類型,微軟已經為我們定義了上述代碼中所示的文本,選擇框,下拉框,超鏈接四個常用列類型,根據業務需求,我們也可以通過DataGridTemplateColumn來自定義列模板。

對於該控件的使用,后期會詳細通過代碼體現,如果有任何控件使用上的問題,您盡可以來垂詢。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM