Silverlight - 內容模型



按鈕為模型內容提供了一種內容形式。模型在控制元件中大量出現。這個想法很簡單。它將接受任何內容,而不僅僅是文字。如果您想建立一個真正奇特的按鈕,您甚至可以將其他內容控制元件(如文字框和按鈕)放在裡面(並在這些控制元件內部巢狀更多元素)。這種介面是否合理值得懷疑,但它是可能的。

讓我們來看一個簡單的例子,其中包含按鈕,在按鈕內部還有其他內容控制元件。

<UserControl x:Class = "ContentModel.MainPage" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   mc:Ignorable = "d" 
   d:DesignHeight = "300" d:DesignWidth = "400">
   
   <Grid x:Name = "LayoutRoot" Background = "White"> 
	
      <Button Margin = "3" Height = "70" Width = "215"> 
         <Grid Margin = "5"> 
            <Polygon Points = "100,25 125,0 200,25 125,50" Fill = "LightSteelBlue" /> 
            <Polygon Points = "100,25 75,0 0,25 75,50" Fill = "LightGray"/> 
         </Grid> 
      </Button> 
		
   </Grid> 
	
</UserControl>

編譯並執行上述程式碼後,您將看到以下按鈕。

Content Controls

範圍控制元件

捲軸和滑塊控制元件密切相關。它們都允許使用者從特定範圍內選擇輸入值。傳統上,這些控制元件表示不同的含義。捲軸通常用於設定滾動區域中的位置,而滑塊則用於指定某些值或設定。這些僅僅是約定;控制元件具有類似的行為和 API。

範圍控制元件易於使用。您指定最小值和最大值來指示您希望滑塊表示的值範圍。Value 屬性將隨著使用者拖動而變化。

Slider 類的層次繼承如下:

Inheritance of Slider

以下是 Slider 的常用屬性

序號 屬性和描述
1

Header

獲取或設定控制元件標題的內容。

2

HeaderProperty

標識 Header 依賴項屬性。

3

HeaderTemplate

獲取或設定用於顯示控制元件標題內容的 DataTemplate。

4

HeaderTemplateProperty

標識 HeaderTemplate 依賴項屬性。

5

IntermediateValue

獲取或設定使用者與滑塊互動時滑塊的值,在該值捕捉到刻度或步長值之前。SnapsTo 屬性指定滑塊的值。

6

IntermediateValueProperty

標識 IntermediateValue 依賴項屬性。

7

IsDirectionReversed

獲取或設定一個值,該值指示值增加的方向。

8

IsDirectionReversedProperty

標識 IsDirectionReversed 依賴項屬性。

9

IsThumbToolTipEnabled

獲取或設定一個值,該值確定是否在 Slider 的 Thumb 元件的工具提示中顯示滑塊值。

10

IsThumbToolTipEnabledProperty

標識 IsThumbToolTipEnabled 依賴項屬性。

11

Orientation

獲取或設定 Slider 的方向。

12

OrientationProperty

標識 Orientation 依賴項屬性。

13

StepFrequency

獲取或設定應為其建立步長的值範圍的值部分。

14

StepFrequencyProperty

標識 StepFrequency 依賴項屬性。

15

ThumbToolTipValueConverter

獲取或設定轉換器邏輯,該邏輯將 Slider 的範圍值轉換為工具提示內容。

16

ThumbToolTipValueConverterProperty

標識 ThumbToolTipValueConverter 依賴項屬性。

17

TickFrequency

獲取或設定應為其建立刻度的值範圍的增量。

18

TickFrequencyProperty

標識 TickFrequency 依賴項屬性。

19

TickPlacement

獲取或設定一個值,該值指示相對於軌道繪製刻度標記的位置。

20

TickPlacementProperty

標識 TickPlacement 依賴項屬性。

以下是 Slider 類中的常用事件

序號 事件和描述
1

ManipulationCompleted

當 UIElement 上的操作完成時發生。(繼承自 UIElement)

2

ManipulationDelta

當輸入裝置在操作期間更改位置時發生。(繼承自 UIElement)

3

ManipulationInertiaStarting

當輸入裝置在操作期間與 UIElement 物件失去接觸並且慣性開始時發生。(繼承自 UIElement)

4

ManipulationStarted

當輸入裝置開始對 UIElement 進行操作時發生。(繼承自 UIElement)

5

ManipulationStarting

當首次建立操作處理器時發生。(繼承自 UIElement)

6

ValueChanged

當範圍值更改時發生。(繼承自 RangeBase)

以下是 Slider 類中的常用方法

序號 方法和描述
1

OnManipulationCompleted

在 ManipulationCompleted 事件發生之前呼叫。(繼承自 Control)

2

OnManipulationDelta

在 ManipulationDelta 事件發生之前呼叫。(繼承自 Control)

3

OnManipulationInertiaStarting

在 ManipulationInertiaStarting 事件發生之前呼叫。(繼承自 Control)

4

OnManipulationStarted

在 ManipulationStarted 事件發生之前呼叫。(繼承自 Control)

5

OnManipulationStarting

在 ManipulationStarting 事件發生之前呼叫。(繼承自 Control)

6

OnMaximumChanged

當 Maximum 屬性更改時呼叫。(繼承自 RangeBase)

7

OnMinimumChanged

當 Minimum 屬性更改時呼叫。(繼承自 RangeBase)

8

OnValueChanged

觸發 ValueChanged 路由事件。(繼承自 RangeBase)

9

SetBinding

使用提供的繫結物件將繫結附加到 FrameworkElement。(繼承自 FrameworkElement)

10

SetValue

設定 DependencyObject 上依賴項屬性的區域性值。(繼承自 DependencyObject)

示例

讓我們來看一個簡單的例子,其中添加了一個滑塊和一個橢圓,並且滑塊控制橢圓的寬度。

<UserControl x:Class = "SliderExample.MainPage" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" xmlns:mc = "
   http://schemas.openxmlformats.org/markup-compatibility/2006"  
   mc:Ignorable = "d" d:DesignWidth = "640" d:DesignHeight = "480"> 
   
   <Grid x:Name = "LayoutRoot">
	
      <Grid.RowDefinitions> 
         <RowDefinition Height = "Auto" /> 
         <RowDefinition /> 
      </Grid.RowDefinitions>  
		
      <Slider Minimum = "1" Maximum = "400" Value = "1" 
         ValueChanged = "Slider_ValueChanged" />  
			
      <Ellipse Grid.Row = "1" Fill = "Aqua" Width = "1" x:Name = "myEllipse" /> 
		
   </Grid> 
	
</UserControl>

以下是 C# 中的值更改事件實現。

using System.Windows; 
using System.Windows.Controls; 
 
namespace SliderExample { 

   public partial class MainPage : UserControl { 
	
      public MainPage() { 
         InitializeComponent(); 
      }
	  
      private void Slider_ValueChanged(object sender, 
         RoutedPropertyChangedEventArgs<double> e) { 
			
            if (myEllipse != null) { 
               myEllipse.Width = e.NewValue; 
            } 
      } 
   } 
}

編譯並執行上述程式碼後,您將看到以下輸出。如您所見,當您將滑塊從左向右移動時,橢圓的寬度會增加。

Add Slider And Ellipse
廣告