
- Silverlight 教程
- Silverlight - 首頁
- Silverlight - 概述
- Silverlight - 環境設定
- Silverlight - 入門
- Silverlight - XAML 概述
- Silverlight - 專案型別
- Silverlight - 固定佈局
- Silverlight - 動態佈局
- 受約束與不受約束
- Silverlight - CSS
- Silverlight - 控制元件
- Silverlight - 按鈕
- Silverlight - 內容模型
- Silverlight - 列表框
- Silverlight - 模板
- Silverlight - 可視狀態
- Silverlight - 資料繫結
- Silverlight - 瀏覽器整合
- Silverlight - 瀏覽器外
- Silverlight - 應用程式和資源
- Silverlight - 檔案訪問
- Silverlight - 檢視模型
- Silverlight - 輸入處理
- Silverlight - 隔離儲存
- Silverlight - 文字
- Silverlight - 動畫
- Silverlight - 影片和音訊
- Silverlight - 列印
- Silverlight 有用資源
- Silverlight - 快速指南
- Silverlight - 有用資源
- Silverlight - 討論
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>
編譯並執行上述程式碼後,您將看到以下按鈕。

範圍控制元件
捲軸和滑塊控制元件密切相關。它們都允許使用者從特定範圍內選擇輸入值。傳統上,這些控制元件表示不同的含義。捲軸通常用於設定滾動區域中的位置,而滑塊則用於指定某些值或設定。這些僅僅是約定;控制元件具有類似的行為和 API。
範圍控制元件易於使用。您指定最小值和最大值來指示您希望滑塊表示的值範圍。Value 屬性將隨著使用者拖動而變化。
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; } } } }
編譯並執行上述程式碼後,您將看到以下輸出。如您所見,當您將滑塊從左向右移動時,橢圓的寬度會增加。
