Silverlight - model zawartości
Przyciski oferują formę treści do zawartości modelu. Modele często pojawiają się w kontrolkach. Pomysł jest prosty. Przyjmie dowolną treść, a nie tylko tekst. Jeśli chcesz stworzyć naprawdę egzotyczny przycisk, możesz nawet umieścić w nim inne kontrolki zawartości, takie jak pola tekstowe i przyciski (i zagnieździć w nich nieruchome elementy). Wątpliwe, czy taki interfejs miałby dużo sensu, ale jest to możliwe.
Przyjrzyjmy się prostemu przykładowi z przyciskiem, wewnątrz przycisku i innymi kontrolkami zawartości.
<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>
Gdy powyższy kod zostanie skompilowany i wykonany, zobaczysz następujący przycisk.
RangeControl
Pasek przewijania i elementy sterujące suwakiem są ze sobą ściśle powiązane. Oba pozwalają użytkownikowi wybrać wartość wejściową z określonego zakresu. Zwykle te elementy sterujące oznaczają różne rzeczy. Paski przewijania są zwykle używane do ustawiania pozycji w obszarze moszny, podczas gdy suwak służy do określania wartości lub ustawienia. To tylko konwencje; kontrolki mają podobne zachowanie i interfejsy API.
Sterowanie zakresem jest proste w użyciu. Określasz wartości minimalne i maksymalne, aby wskazać zakres wartości, które chcesz, aby reprezentował suwak. PlikValue właściwość będzie się różnić w zależności od użycia przeciągnięć.
Hierarchiczne dziedziczenie Slider klasa jest następująca -
Podane poniżej są powszechnie używane properties z Slider.
Sr. No. | Właściwość i opis |
---|---|
1 | Header Pobiera lub ustawia zawartość nagłówka kontrolki. |
2 | HeaderProperty Identyfikuje właściwość zależności Header. |
3 | HeaderTemplate Pobiera lub ustawia DataTemplate używany do wyświetlania zawartości nagłówka kontrolki. |
4 | HeaderTemplateProperty Identyfikuje właściwość zależności HeaderTemplate. |
5 | IntermediateValue Pobiera lub ustawia wartość Slider, gdy użytkownik wchodzi z nim w interakcję, zanim wartość zostanie przyciągnięta do wartości taktu lub kroku. Właściwość SnapsTo określa wartość suwaka. |
6 | IntermediateValueProperty Identyfikuje właściwość zależności IntermediateValue. |
7 | IsDirectionReversed Pobiera lub ustawia wartość wskazującą kierunek zwiększania wartości. |
8 | IsDirectionReversedProperty Identyfikuje właściwość zależności IsDirectionReversed. |
9 | IsThumbToolTipEnabled Pobiera lub ustawia wartość określającą, czy wartość suwaka jest wyświetlana w etykietce narzędzia dla składnika Thumb suwaka. |
10 | IsThumbToolTipEnabledProperty Identyfikuje właściwość zależności IsThumbToolTipEnabled. |
11 | Orientation Pobiera lub ustawia orientację Slider. |
12 | OrientationProperty Identyfikuje właściwość zależności Orientation. |
13 | StepFrequency Pobiera lub ustawia część wartości zakresu wartości, dla którego należy utworzyć kroki. |
14 | StepFrequencyProperty Identyfikuje właściwość zależności StepFrequency. |
15 | ThumbToolTipValueConverter Pobiera lub ustawia logikę konwertera, która konwertuje wartość zakresu Slider na zawartość podpowiedzi. |
16 | ThumbToolTipValueConverterProperty Identyfikuje właściwość zależności ThumbToolTipValueConverter. |
17 | TickFrequency Pobiera lub ustawia przyrost zakresu wartości, dla którego należy utworzyć znaczniki. |
18 | TickFrequencyProperty Identyfikuje właściwość zależności TickFrequency. |
19 | TickPlacement Pobiera lub ustawia wartość wskazującą, gdzie rysować znaczniki w odniesieniu do ścieżki. |
20 | TickPlacementProperty Identyfikuje właściwość zależności TickPlacement. |
Podane poniżej są powszechnie używane events w Slider klasa.
Sr. No. | Opis wydarzenia |
---|---|
1 | ManipulationCompleted Występuje po zakończeniu manipulacji na UIElement. (Odziedziczone po UIElement) |
2 | ManipulationDelta Występuje, gdy urządzenie wejściowe zmienia położenie podczas manipulacji. (Odziedziczone po UIElement) |
3 | ManipulationInertiaStarting Występuje, gdy urządzenie wejściowe traci kontakt z obiektem UIElement podczas manipulacji i rozpoczyna się bezwładność. (Odziedziczone po UIElement) |
4 | ManipulationStarted Występuje, gdy urządzenie wejściowe rozpoczyna manipulację na UIElement. (Odziedziczone po UIElement) |
5 | ManipulationStarting Występuje po pierwszym utworzeniu procesora manipulacji. (Odziedziczone po UIElement) |
6 | ValueChanged Występuje, gdy zmienia się wartość zakresu. (Odziedziczone po RangeBase) |
Podane poniżej są powszechnie używane methods in Klasa suwaka.
Sr. No. | Metoda i opis |
---|---|
1 | OnManipulationCompleted Wywoływana przed wystąpieniem zdarzenia ManipulationCompleted. (Odziedziczone po Control) |
2 | OnManipulationDelta Wywoływana przed wystąpieniem zdarzenia ManipulationDelta. (Odziedziczone po Control) |
3 | OnManipulationInertiaStarting Wywoływana przed wystąpieniem zdarzenia ManipulationInertiaStarting. (Odziedziczone po Control) |
4 | OnManipulationStarted Wywoływana przed wystąpieniem zdarzenia ManipulationStarted. (Odziedziczone po Control) |
5 | OnManipulationStarting Wywoływana przed wystąpieniem zdarzenia ManipulationStarting. (Odziedziczone po Control) |
6 | OnMaximumChanged Wywoływana po zmianie właściwości Maximum. (Odziedziczone po RangeBase) |
7 | OnMinimumChanged Wywoływana po zmianie właściwości Minimum. (Odziedziczone po RangeBase) |
8 | OnValueChanged Odpala zdarzenie kierowane ValueChanged. (Odziedziczone po RangeBase) |
9 | SetBinding Dołącza powiązanie do FrameworkElement przy użyciu podanego obiektu powiązania. (Odziedziczone po FrameworkElement) |
10 | SetValue Ustawia wartość lokalną właściwości zależności w DependencyObject. (Odziedziczone po DependencyObject) |
Przykład
Przyjrzyjmy się prostemu przykładowi, w którym suwak i elipsa są dodawane, a suwak kontroluje szerokość elipsy.
<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>
Podano poniżej value changed event implementacja to 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;
}
}
}
}
Gdy powyższy kod zostanie skompilowany i wykonany, zobaczysz następujące dane wyjściowe. Jak widać, gdy przesuwasz suwak od lewej do prawej, szerokość elipsy rośnie.