Silverlight - Mô hình nội dung
Các nút cung cấp một dạng nội dung cho nội dung mô hình. Các mô hình có rất nhiều điều khiển. Ý tưởng là đơn giản. Nó sẽ chấp nhận bất kỳ nội dung nào và không chỉ văn bản. Nếu bạn muốn tạo một nút thực sự kỳ lạ, bạn thậm chí có thể đặt các điều khiển nội dung khác như hộp văn bản và nút bên trong (và lồng các phần tử tĩnh bên trong những nút này). Người ta nghi ngờ rằng một giao diện như vậy sẽ có nhiều ý nghĩa, nhưng nó hoàn toàn có thể.
Chúng ta hãy xem một ví dụ đơn giản với nút, nút bên trong các điều khiển nội dung khác.
<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>
Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy nút sau.
RangeControl
Thanh cuộn và điều khiển thanh trượt có liên quan chặt chẽ với nhau. Cả hai đều cho phép người dùng chọn một giá trị đầu vào từ một phạm vi cụ thể. Thông thường, những điều khiển này biểu thị những điều khác nhau. Thanh cuộn thường được sử dụng để đặt vị trí thành vùng cuộn trong khi thanh trượt được sử dụng để chỉ định một số giá trị hoặc cài đặt. Đây chỉ là những quy ước; các điều khiển có các hành vi và API tương tự.
Các điều khiển phạm vi rất dễ sử dụng. Bạn chỉ định giá trị tối thiểu và tối đa để chỉ ra phạm vi giá trị mà bạn muốn thanh trượt đại diện. CácValue tài sản sẽ khác nhau khi việc sử dụng kéo khác nhau.
Sự kế thừa thứ bậc của Slider lớp như sau -
Dưới đây là các properties của Slider.
Sr không. | Kê khai tài sản |
---|---|
1 | Header Lấy hoặc đặt nội dung cho tiêu đề của điều khiển. |
2 | HeaderProperty Xác định thuộc tính phụ thuộc Header. |
3 | HeaderTemplate Lấy hoặc đặt DataTemplate được sử dụng để hiển thị nội dung của tiêu đề điều khiển. |
4 | HeaderTemplateProperty Xác định thuộc tính phụ thuộc HeaderTemplate. |
5 | IntermediateValue Lấy hoặc đặt giá trị của Thanh trượt trong khi người dùng đang tương tác với nó, trước khi giá trị được gắn vào giá trị đánh dấu hoặc bước. Thuộc tính SnapsTo chỉ định giá trị của thanh trượt. |
6 | IntermediateValueProperty Xác định thuộc tính phụ thuộc IntermediateValue. |
7 | IsDirectionReversed Nhận hoặc đặt một giá trị cho biết hướng tăng giá trị. |
số 8 | IsDirectionReversedProperty Xác định thuộc tính phụ thuộc IsDirectionReversed. |
9 | IsThumbToolTipEnabled Lấy hoặc đặt một giá trị xác định xem giá trị thanh trượt có được hiển thị trong một mẹo công cụ cho thành phần Ngón cái của Thanh trượt hay không. |
10 | IsThumbToolTipEnabledProperty Xác định thuộc tính phụ thuộc IsThumbToolTipEnabled. |
11 | Orientation Lấy hoặc đặt hướng của Thanh trượt. |
12 | OrientationProperty Xác định thuộc tính phụ thuộc Định hướng. |
13 | StepFrequency Lấy hoặc đặt phần giá trị của phạm vi giá trị mà các bước sẽ được tạo. |
14 | StepFrequencyProperty Xác định thuộc tính phụ thuộc StepFrequency. |
15 | ThumbToolTipValueConverter Nhận hoặc đặt logic chuyển đổi chuyển đổi giá trị phạm vi của Thanh trượt thành nội dung mẹo công cụ. |
16 | ThumbToolTipValueConverterProperty Xác định thuộc tính phụ thuộc ThumbToolTipValueConverter. |
17 | TickFrequency Nhận hoặc đặt gia số của phạm vi giá trị mà tick sẽ được tạo. |
18 | TickFrequencyProperty Xác định thuộc tính phụ thuộc TickFrequency. |
19 | TickPlacement Nhận hoặc đặt một giá trị cho biết vị trí cần vẽ dấu tích liên quan đến bản nhạc. |
20 | TickPlacementProperty Xác định thuộc tính phụ thuộc TickPlacement. |
Dưới đây là các events trong Slider lớp học.
Sr không. | Sự kiện & Mô tả |
---|---|
1 | ManipulationCompleted Xảy ra khi một thao tác trên UIElement hoàn tất. (Kế thừa từ UIElement) |
2 | ManipulationDelta Xảy ra khi thiết bị đầu vào thay đổi vị trí trong khi thao tác. (Kế thừa từ UIElement) |
3 | ManipulationInertiaStarting Xảy ra khi thiết bị đầu vào mất liên lạc với đối tượng UIElement trong quá trình thao tác và bắt đầu quán tính. (Kế thừa từ UIElement) |
4 | ManipulationStarted Xảy ra khi thiết bị đầu vào bắt đầu thao tác trên UIElement. (Kế thừa từ UIElement) |
5 | ManipulationStarting Xảy ra khi bộ xử lý thao tác được tạo lần đầu tiên. (Kế thừa từ UIElement) |
6 | ValueChanged Xảy ra khi giá trị phạm vi thay đổi. (Được kế thừa từ RangeBase) |
Dưới đây là các methods in Lớp trượt.
Sr không. | Phương pháp & Mô tả |
---|---|
1 | OnManipulationCompleted Được gọi trước khi sự kiện ManipulationCompleted xảy ra. (Kế thừa từ Control) |
2 | OnManipulationDelta Được gọi trước khi sự kiện ManipulationDelta xảy ra. (Kế thừa từ Control) |
3 | OnManipulationInertiaStarting Được gọi trước khi sự kiện ManipulationInertiaStarting xảy ra. (Kế thừa từ Control) |
4 | OnManipulationStarted Được gọi trước khi sự kiện ManipulationStarted xảy ra. (Kế thừa từ Control) |
5 | OnManipulationStarting Được gọi trước khi sự kiện ManipulationStarting xảy ra. (Kế thừa từ Control) |
6 | OnMaximumChanged Được gọi khi thuộc tính Tối đa thay đổi. (Được kế thừa từ RangeBase) |
7 | OnMinimumChanged Được gọi khi thuộc tính Tối thiểu thay đổi. (Được kế thừa từ RangeBase) |
số 8 | OnValueChanged Kích hoạt sự kiện được định tuyến ValueChanged. (Được kế thừa từ RangeBase) |
9 | SetBinding Đính kèm một liên kết vào FrameworkElement, sử dụng đối tượng liên kết được cung cấp. (Kế thừa từ FrameworkElement) |
10 | SetValue Đặt giá trị cục bộ của thuộc tính phụ thuộc trên DependencyObject. (Được kế thừa từ DependencyObject) |
Thí dụ
Chúng ta hãy xem một ví dụ đơn giản trong đó một thanh trượt và một hình elip được thêm vào và thanh trượt điều khiển chiều rộng của hình elip.
<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>
Dưới đây là value changed event triển khai là 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;
}
}
}
}
Khi đoạn mã trên được biên dịch và thực thi, bạn sẽ thấy kết quả sau. Như bạn có thể thấy, khi bạn di chuyển thanh trượt từ trái sang phải, chiều rộng hình elip sẽ tăng lên.