最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

WPF開發(fā)之UniformGrid和ItemsControl的應(yīng)用詳解

 更新時間:2024年01月31日 09:48:29   作者:老碼識途呀  
為了簡化開發(fā),WPF提供了UniformGrid布局和ItemsControl容器,本文以一個簡單的小例子,簡述如何在WPF開發(fā)中應(yīng)用UniformGrid和ItemsControl實現(xiàn)均勻的布局,希望對大家有所幫助

在日常開發(fā)中,有些布局非常具有規(guī)律性,比如相同的列寬,行高,均勻的排列等,為了簡化開發(fā),WPF提供了UniformGrid布局和ItemsControl容器,本文以一個簡單的小例子,簡述,如何在WPF開發(fā)中應(yīng)用UniformGrid和ItemsControl實現(xiàn)均勻的布局,僅供學(xué)習(xí)分享使用,如有不足之處,還請指正。

什么是UniformGrid

在WPF開發(fā)中,提供了一種Grid網(wǎng)格布局,此布局應(yīng)用靈活,形式多樣,在使用之前,需要定義行,列,設(shè)置高度,寬度等內(nèi)容,使用相對復(fù)雜。為了簡化布局,針對具有等寬,等高的布局,提供了一種更加簡化的布局容器UniformGrid。

UniformGrid【統(tǒng)一布局】,提供一種在網(wǎng)格(網(wǎng)格中的所有單元格都具有相同的大小)中排列內(nèi)容的方法。

UniformGrid常用屬性

UniformGird中同一行中,列等寬,同一列中,行等高。常用屬性為:

  • Margin:獲取或設(shè)置元素的外邊距。
  • Name:元素的標(biāo)識名稱;
  • Opacity:透明度
  • Width/Height:寬度和高度;
  • Visibility:該元素可見性;
  • Rows:獲取或設(shè)置網(wǎng)格中的行數(shù);
  • Columns:獲取或設(shè)置網(wǎng)格中的列數(shù);
  • FirstColumn    獲取或設(shè)置網(wǎng)格第一行中前導(dǎo)空白單元格的數(shù)量,必須小于屬性的值 Columns;

注意:UniformGrid相當(dāng)于簡化版的Gird,但并不是Grid的子類,而是和Grid同級,都繼承于與Panel類。

UniformGrid示例

UniformGrid中如果不設(shè)置子元素的控件大小,會根據(jù)容器的大小和行列數(shù)自動填充。如下所示:

<UniformGrid Columns="4" Margin="5">
    <Button Content="按鈕1" Margin="2"></Button>
    <Button Content="按鈕2" Margin="2"></Button>
    <Button Content="按鈕3" Margin="2"></Button>
    <Button Content="按鈕4" Margin="2"></Button>
    <Button Content="按鈕5" Margin="2"></Button>
    <Button Content="按鈕6" Margin="2"></Button>
</UniformGrid>

關(guān)于UniformGrid,有以下幾點需要注意:

如果設(shè)置了Columns,沒有設(shè)置Rows,則會根據(jù)元素個數(shù)和列數(shù)自動計算行數(shù)。

如果設(shè)置了Rows,沒有設(shè)置Columns,則會根據(jù)元素個數(shù)和行數(shù)自動計算列數(shù)。

如果Rows,Columns都沒有設(shè)置,則會根據(jù)元素個數(shù)自動匹配,建議至少設(shè)置一個,否則可能與預(yù)期的布局不符。

如果沒有設(shè)置容器中元素的大下,則自動填充;如果設(shè)置了容器中元素的大小,且小于容器為該元素分配的平均大小,則以元素為準,其他以空白填充;如果設(shè)置了元素大小,且元素的大小大于容器為該元素分配的平均大小,則多余部分會隱藏,只顯示能夠顯示的那部分。

什么是ItemsControl

ItemsControl條目控件,用于顯示數(shù)據(jù)項集合,它允許按照自定義方式呈現(xiàn)任何類型的對象,可以在其中使用不同的布局和面板來展示數(shù)據(jù)。ItemsControl非常靈活,可以滿足各種需求。

ItemsControl涉及知識點

ItemsControl的常用知識點如下:

  • ItemTemplate,是DataTemplate類型,可以通過ItemTemplate設(shè)置條目項的呈現(xiàn)方式。
  • ItemsPanel,是ItemsPanelTemplate類型,可以通過ItemsPanel設(shè)置容器中各個條目項的布局方式。
  • ItemsSource,可以通過綁定數(shù)據(jù)源為ItemsControl設(shè)置內(nèi)容。
  • Items,條目列表,如果設(shè)置了ItemsSource,則此屬性不生效。

ItemsControl示例

以下示例以文本的形式,展示了每一個條目項,且默認元素以橫向排列。如下所示:

<ItemsControl ItemsSource="{Binding Customers}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

ItemsControl和UniformGrid結(jié)合

結(jié)合ItemsControl【數(shù)據(jù)綁定,條目項自定義設(shè)置】和UniformGrid【等高,等寬】各自的優(yōu)點,創(chuàng)建一個圖片列表。具體步驟如下:

  • 自動識別文件夾中的圖片,然后將數(shù)據(jù)源綁定到ItemsControl中進行呈現(xiàn)。
  • ItemsControl中的條目項中展示圖片縮略圖和名稱,且條目項中的圖片等比縮放。
  • 條目布局采用UniformGrid,且每行顯示5張圖。
  • 圖片較多時,要有滾動條,所以需要設(shè)置ScrollViewer。

在Xaml中,頁面布局如下所示:

<ScrollViewer VerticalScrollBarVisibility="Auto">
    <ItemsControl ItemsSource="{Binding ImageItems}" Background="#eeeeee">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Columns="5"></UniformGrid>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Vertical" Margin="3">
                    <Image Source="{Binding ImagePath}" Stretch="Uniform"></Image>
                    <TextBlock Text="{Binding ImageName}" HorizontalAlignment="Center" VerticalAlignment="Bottom"></TextBlock>
                </StackPanel>
 
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</ScrollViewer>

其中ItemsSource屬性用于綁定數(shù)據(jù)源,在ViewModel層進行構(gòu)造,如下所示:

public class MainWindowViewModel
{
    public ObservableCollection<ImageItem> ImageItems { get; set; }
 
    public MainWindowViewModel()
    {
        ImageItems = new ObservableCollection<ImageItem>();
        for(int i = 0; i < 8; i++)
        {
            for(int j = 0; j < 5; j++)
            {
                var imageName = $"{i+1}.{j+1}.jpg";
                var imagePath = Path.Combine(Environment.CurrentDirectory, "imgs", imageName);
                ImageItems.Add(new ImageItem(){ImageName = imageName,ImagePath = imagePath});
            }
        }
    }
}

運行示例如下所示:

到此這篇關(guān)于WPF開發(fā)之UniformGrid和ItemsControl的應(yīng)用詳解的文章就介紹到這了,更多相關(guān)WPF UniformGrid ItemsControl內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#實現(xiàn)拼手氣紅包算法

    C#實現(xiàn)拼手氣紅包算法

    這篇文章主要為大家詳細介紹了C#實現(xiàn)拼手氣紅包算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • C#中的HttpWebRequest類介紹

    C#中的HttpWebRequest類介紹

    本文詳細講解了C#中的HttpWebRequest類,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • C# WinForm 判斷程序是否已經(jīng)在運行,且只允許運行一個實例,附源碼

    C# WinForm 判斷程序是否已經(jīng)在運行,且只允許運行一個實例,附源碼

    本文主要介紹WinFrom程序中只允許運行一個實例的方法,并有完整的代碼示例,希望能給需要的朋友一些幫助。
    2016-04-04
  • C#使用隨機樞軸實現(xiàn)快速排序的方法

    C#使用隨機樞軸實現(xiàn)快速排序的方法

    本文探討了如何使用隨機樞軸實現(xiàn)快速排序,介紹了Lomuto和Hoare兩種分區(qū)方案,并提出了一種不使用傳統(tǒng)分區(qū)方案的實現(xiàn)方法,需要的朋友可以參考下
    2026-04-04
  • Unity?UGUI的PhysicsRaycaster物理射線檢測組件介紹使用

    Unity?UGUI的PhysicsRaycaster物理射線檢測組件介紹使用

    這篇文章主要介紹了Unity?UGUI的PhysicsRaycaster物理射線檢測組件的介紹及使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 使用C#代碼更改PowerPoint文檔中的幻燈片順序

    使用C#代碼更改PowerPoint文檔中的幻燈片順序

    優(yōu)化 PowerPoint 演示文稿中的幻燈片順序是一項簡單但實用的技能,通過重新排列幻燈片,你可以完善演示文稿的邏輯與流程,本文將演示如何通過 C# 編程方式更改 PowerPoint 文檔中的幻燈片順序,需要的朋友可以參考下
    2025-11-11
  • C#對文件/文件夾操作代碼匯總

    C#對文件/文件夾操作代碼匯總

    有關(guān)文件的操作的內(nèi)容非常多,不過幾乎都是從下面的這些基礎(chǔ)方法中演化出來的。比如對內(nèi)容的修改,不外乎就是加上點字符串操作或者流操作。還有其它一些特別的內(nèi)容,等在開發(fā)項目中具體遇到后再添加。
    2015-04-04
  • C#實現(xiàn)將TextBox綁定為KindEditor富文本

    C#實現(xiàn)將TextBox綁定為KindEditor富文本

    KindEditor?依靠出色的用戶體驗和領(lǐng)先的技術(shù)提供富文本編輯功能,是一款非常受歡迎的HTML在線編輯器,下面我們就來看看C#如何將TextBox綁定為KindEditor富文本吧
    2024-04-04
  • c# String擴展 讓你在PadLeft和PadRight時不再受單雙字節(jié)問題困擾

    c# String擴展 讓你在PadLeft和PadRight時不再受單雙字節(jié)問題困擾

    這篇文章主要介紹了c# String擴展 讓你在PadLeft和PadRight時不再受單雙字節(jié)問題困擾,需要的朋友可以參考下
    2020-04-04
  • C# 時間和日期的處理方法

    C# 時間和日期的處理方法

    這篇文章主要介紹了C#時間和日期的處理,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-06-06

最新評論

隆回县| 桐城市| 黄龙县| 凯里市| 大竹县| 微山县| 罗源县| 曲靖市| 安泽县| 古丈县| 开阳县| 淄博市| 出国| 阳东县| 丘北县| 青龙| 正阳县| 河池市| 册亨县| 通海县| 镇雄县| 阿图什市| 略阳县| 迭部县| 巢湖市| 周宁县| 上饶市| 郯城县| 新民市| 应用必备| 石楼县| 陇南市| 共和县| 伊吾县| 华宁县| 岑溪市| 嘉禾县| 信阳市| 长宁区| 会宁县| 莎车县|