1. 程式人生 > >WPF中WrapPanel、StackPanel等新增滾動條ScrollViewer

WPF中WrapPanel、StackPanel等新增滾動條ScrollViewer

wpf中,在控制元件中直接設定ScrollViewer.HorizontalScrollBarVisibility和ScrollViewer.VerticalScrollBarVisibility屬性,並不能顯示滾動條。因為在wpf中,想要顯示滾動條,需要把控制元件放在滾動條檢視控制元件(ScrollViewer)中。

ScrollViewer屬性說明:

VerticalScrollBarVisibility="Auto"  // 設定垂直滾動條自動顯示,只要內部控制元件的實際高度大於ScrollViewer的高度,就會自動顯示垂直滾動條。
HorizontalScrollBarVisibility="Auto"  // 設定水平滾動條自動顯示,只要內部控制元件的實際寬度大於ScrollViewer的寬度,就會自動顯示水平滾動條。
由於WrapPanel和StackPanel比較特殊,所以這裡對這兩個控制元件做一下說明:

1、WrapPanel

內部控制元件自動換行佈局的Panel。

那麼什麼情況下會自動換行呢?當達到WrapPanel寬度的時候。

問題:如果WrapPanel的HorizontalAlignment屬性都設定為"Stretch",那麼就代表寬度可以無限大,這個時候就只會顯示水平滾動條,垂直滾動條不生效。

解決方案1:設定WrapPanel的寬度。

解決方案2:設定WrapPanel的寬度自適應ScrollViewer的寬度:Width="{Binding ElementName=scrList, Path=Width, Mode=OneWay}",這個時候依賴於ScrollViewer控制元件的寬度。

2、StackPanel

內部控制元件垂直佈局的Panel。

當子控制元件的寬度大於StackPanel的寬度,就會出現水平滾動條。

當子控制元件的高度大於StackPanel的高度,就會出現垂直滾動條。

一、WrapPanel應用舉例。

1、顯示水平滾動條。

 <ScrollViewer x:Name="scr" Margin="0" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
                                <WrapPanel x:Name="pnlCandidate"/>
                            </ScrollViewer>
2、顯示垂直滾動條。

第一種情況:

 <ScrollViewer x:Name="scr" Margin="0" VerticalScrollBarVisibility="Auto">
                                <WrapPanel x:Name="pnlCandidate"/>
                            </ScrollViewer>
這個時候預設WrapPanel的HorizontalAlignment=“Stretch”,即自適應ScrollerViewer的寬度,所以WrapPanel子控制元件會自動換行,當超過父控制元件的高度,會顯示垂直滾動條。

第二種情況:

 <ScrollViewer x:Name="scr" Margin="0" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
                                <WrapPanel x:Name="pnlCandidate" Width="{Binding ElementName=scrList, Path=Width, Mode=OneWay}"/>
                            </ScrollViewer>
當設定水平和垂直滾動條都自動顯示的時候,如果想顯示垂直滾動條,則需要設定Width="{Binding ElementName=scrList, Path=Width, Mode=OneWay}",使WrapPanel自適應ScrollViewer的寬度。

二、StackPanel子控制元件顯示滾動條。

 <StackPanel>
                            <Label Content="候選列表" FontSize="18" Width="5000" Background="Transparent" Foreground="White" BorderThickness="1" BorderBrush="{DynamicResource DefaultBorderColor}"/>
                            <ScrollViewer x:Name="scrList" Margin="0" VerticalScrollBarVisibility="Auto" Height="390">
                                <local:WrapPanelTemplates x:Name="pnlCandidate"/>
                            </ScrollViewer>
                        </StackPanel>
效果圖:



相關推薦

WPFWrapPanelStackPanel新增滾動ScrollViewer

wpf中,在控制元件中直接設定ScrollViewer.HorizontalScrollBarVisibility和ScrollViewer.VerticalScrollBarVisibility屬性,並不能顯示滾動條。因為在wpf中,想要顯示滾動條,需要把控制元件放在滾動

C++intstring常見型別轉換

 C++中int、string等常見型別轉換 1、int型與string型的互相轉換 最佳實踐: int型轉string型 void int2str(const int &int_temp,string &str

VS程式設計,WPF兩個滾動 ScrollViewer 同步滾動的一種方法

這裡以兩個ScrollViewer控制元件之間的同步滾動為例。 當滑鼠拖動其中一個滾動條時,另一個滾動條跟著一起調整到相應的位置。   1、前臺建立兩個ScrollViewer控制元件,並分別給兩個滾動條控制元件命名。 <Stack

C#方法的預設訪問修飾符~

C# 方法預設訪問級別 : private C# 類預設訪問級別 : internal1.名稱空間下的元素的預設訪問修飾符public : 同一程式集的其他任何程式碼或引用該程式集的其他程式集都可以訪問該型別或成員。internal : 同一程式集中的任何程式碼都可以訪問該型

echarts柱狀圖折線圖橫座標新增滾動方法

在option中新增屬性: dataZoom: { show: true, realtime: true, y: 36, height: 20, start:

【java】ArrayListindexOfcontains方法的判斷問題

https://blog.csdn.net/VermouthChow/article/details/80206755   ArrayList中的indexOf、contains、remove的等方法實際需要equals方法的支援。其中contains方法呼叫的是indexOf方法

Inspector屬性面板[HideInInspector]ExecuteInEditMode屬性介紹

[HideInInspector]:表示將原本顯示在面板上的序列化值隱藏起來。 C#的Public是公開的,當被其他物體或者程式碼獲取的時候一樣可以取得這個值,說白了目的就是不讓編輯器去修改這個值,而是在程式碼過程中去改變,並且可以在程式碼中獲取到值。 [S

datagrid新增滾動

DATAGRID中是沒滾動條的,要新增的話其實很簡單,只需要:<div style="OVERFLOW:auto;WIDTH:400px;HEIGHT:500px">  <asp:DataGrid id

在樹狀控制元件新增滾動

<div style="PADDING-RIGHT: 10px;OVERFLOW-Y: auto; PADDING-LEFT: 10px;SCROLLBAR-FACE-COLOR: #ffffff; FONT-SIZE: 11pt; PADDING-BOTTOM: 0p

iOS開發之GPUImage研究總結,視訊圖片新增濾鏡(轉載)

Part one: 關於GPUImage 這裡直接引用官方描述: The GPUImage framework is a BSD-licensed iOS library that lets you apply GPU-accelerated filters and

MyEclipse設定JSP頁面預設編碼方式以及設定在Java檔案作者日期操作說明

MyEclipse設定JSP頁面預設編碼方式: windows(視窗)-Preferences(首選項)-MyEclipse-Files & Editors-JSP-右側encoding:設定

批處理檔案(.bat 檔案)%0%1是表示什麼

%0 指批處理本身。 %1 指批處理檔案名後加的以空格分隔的字串。 %2~%9類推 比如說 D盤根目錄下有aa.txt,bb.txt,cc.txt三個文字和一個名1.bat的批處理,批處理內容是 @echo off start %1 start %3 開啟CMD定位到D盤

C\C++intdouble資料類型範圍的理解

C \ C++中整型資料都是有資料範圍的,對溢位的資料處理機制一般是資料值和資料範圍值進行求模處理,求模可以這麼理解,資料描述是一個數據描述範圍最小值到最大值的一個閉環迴圈,求模後的值會仍在這個閉環範圍內,例如鐘錶,可用1~12來一個閉環來描述,13則就是從新回

對SpringMappingSqlQueryWithParametersSqlQuery的一些理解

MappingSqlQueryWithParameters、SqlQuery等都是在Spring的org.springframework.jdbc.object包中。從包名object中也可以看出來這裡面放的是物件,主要是查詢物件。顧名思義,就是將查詢這個操作封裝成了一個物

VS編程,WPF兩個滾動 ScrollViewer 同步滾動的一種方法

9.png hid 聲明 class ESS 定義 如果 src 中一 原文:VS編程,WPF中兩個滾動條 ScrollViewer 同步滾動的一種方法

[工作札記]03: 微軟Winform窗體ListViewDataGridView控制元件的Bug,會導致程式編譯失敗,影響範圍:到最新的.net4.7.2都有

工作中,我們發現了微軟.net WinForm的一個Bug,會導致窗體設計器自動生成的程式碼失效,這個Bug從.net4.5到最新的.net4.7.2都存在,一直沒有解決。最初是我在教學工作中發現的,後來工作的時候該Bug也常現。 重現步驟:   使用VisualStudio2013/2015/2017/

jquery的scrollTop控制瀏覽器的滾動

nim set ie6 可視化 best 定位 pat htm 位置  jQuery獲取的相關方法  jquery 獲取滾動條高度獲取瀏覽器顯示區域的高度 : $(window).height(); 獲取瀏覽器顯示區域的寬度 :$(window).width(); 獲取頁面

給div新增滾動

最簡單的方法:   <div style="height:300px;width:100px;overflow:auto"><div/>(height和width根據需求設定)     注意:如果只寫height就只有垂直滾動條,只寫width就只有水平滾動條,都不寫

Bootstrap模態框新增滾動(一級)

/*不使用頁面的滾動條*//*css:給模態框設定overflow-y: hidden;即為取消掉頁面滾動條的使用*/#HelpModal{margin-top: 95px;height: 300px;overflow-y: hidden;} /*新增滾動條*/.modal-content {overflow

mui新增滾動

根據文件提示,在需要新增滾動條的區域,引入       <div class="mui-scroll-wrapper">              <div class="mui