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常用的属性

Sr. No. 属性和描述
1

Header

获取或设置控件标头的内容。

2

HeaderProperty

标识标头依赖属性。

3

HeaderTemplate

获取或设置用于显示控件标头内容的 DataTemplate。

4

HeaderTemplateProperty

标识 HeaderTemplate 依赖属性。

5

IntermediateValue

在用户与滑块交互时,在该值捕捉到刻度值或步长值之前,获取或设置滑块的值。 SnapsTo 属性指定滑块的值。

6

IntermediateValueProperty

标识 IntermediateValue 依赖属性。

7

IsDirectionReversed

获取或设置一个指示值增加方向的值。

8

IsDirectionReversedProperty

标识 IsDirectionReversed 依赖属性。

9

IsThumbToolTipEnabled

获取或设置一个值,该值确定滑块值是否显示在滑块的 Thumb 组件的工具提示中。

10

IsThumbToolTipEnabledProperty

标识 IsThumbToolTipEnabled 依赖属性。

11

Orientation

获取或设置滑块的方向。

12

OrientationProperty

标识方向依赖属性。

13

StepFrequency

获取或设置应为其创建步骤的值范围的值部分。

14

StepFrequencyProperty

标识 StepFrequency 依赖属性。

15

ThumbToolTipValueConverter

获取或设置将 Slider 的范围值转换为工具提示内容的转换器逻辑。

16

ThumbToolTipValueConverterProperty

标识 ThumbToolTipValueConverter 依赖属性。

17

TickFrequency

获取或设置应为其创建刻度的值范围的增量。

18

TickFrequencyProperty

标识 TickFrequency 依赖属性。

19

TickPlacement

获取或设置一个值,该值指示在何处绘制与轨道相关的刻度线。

20

TickPlacementProperty

标识 TickPlacement 依赖属性。

下面给出的是Slider类中常用的事件

Sr. No. 事件和描述
1

ManipulationCompleted

在 UIElement 上的操作完成时发生。 (继承自UIElement)

2

ManipulationDelta

当输入设备在操作期间改变位置时发生。 (继承自UIElement)

3

ManipulationInertiaStarting

当输入设备在操作期间失去与 UIElement 对象的接触并且惯性开始时发生。 (继承自UIElement)

4

ManipulationStarted

当输入设备开始对 UIElement 进行操作时发生。 (继承自UIElement)

5

ManipulationStarting

首次创建操作处理器时发生。 (继承自UIElement)

6

ValueChanged

当范围值更改时发生。 (继承自RangeBase)

下面给出了Slider类中常用的方法。

Sr. No. 方法及说明
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; 
            } 
      } 
   } 
}

编译并执行上述代码后,您将看到以下输出。 正如您所看到的,当您从左向右移动滑块时,椭圆宽度会增加。

添加滑块和椭圆