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