详解如何在主页中放入WPF自定义控件

详解如何在主页中放入WPF自定义控件,第1张

现在我们已创建了一个自定义用户控件,并为其添加了一些绝妙的外观状态。现在,我们会将该自定义控件放入我们的主页中并添加一些按钮。然后,我们还将演示如何在 Embedded XAML Runtime 中链接这些按钮,并且让该项目在运行 CE 6.0 的嵌入式设备上运行。 1. 在 LayoutRoot 页面的顶部,您应该看到一个列有“Page.xaml”的选项卡。单击该选项卡打开主页文件。如果看不到该选项卡,可以单击右侧工具箱中的“项目”选项卡,然后通过浏览找到该文件 2. 让我们通过执行与上述自定义圆柱体控件类似的 *** 作来添加渐变,使主页变得更为引人注目 3. 只需在“对象和时间线”工具箱中选择“LayoutRoot”元素,然后单击在屏幕右侧的“属性”选项卡 4. 使用多种不同的渐变和颜色工具来实现您喜欢的背景颜色 5. 那么,现在让我们将自定义控件添加到该页面中 6. 我们需要先快速生成项目,以使自定义控件可以编译成一个资源。为此,转到“项目”->“生成解决方案”菜单项,或者只需单击键盘上的 F5 即可。生成过程将需要一点时间,可能会d出一个 Internet Explorer 窗口。不用理会它,关闭即可 7. 完成此过程后,我们便可以将自定义控件添加到该页面中 8. 在左侧工具面板中单击“资产”按钮 9. 进入“资源库”查看器后,单击“自定义控件”选项卡 10. 将“CylinderUserControl”项拖至您的 LayoutRoot 中 11. 我们需要为我们的元素命名 12. 单击圆柱体,然后在右侧“属性”面板的顶部键入“Cylinder”作为名称 13. 好了!我们仅需向我们的项目中添加三个按钮即可:“填充”按钮、“清空”按钮和“退出”按钮 14. 添加按钮非常简单 15. 在左侧工具栏中单击“按钮”按钮,然后转到您的 LayoutRoot 并拖动,即可在您的项目中创建任意大小的按钮。这样 *** 作三次 16. 现在,再次在左侧工具栏中单击“选择”箭头工具。选择第一个按钮,然后单击右侧面板中的“属性”选项卡(如果它未打开)。在“属性”面板的顶部是“名称”文本框字段。将这些按钮分别命名为“填充”、“清空”和“退出”。另外,您还需编辑每个按钮的“内容”字段,以便按钮显示正确的文本。“内容”字段也位于“属性”面板中 最后一次生成项目并将其保存起来。现在,您已创建了 Embedded XAML Runtime 项目需要的所有 XAML 文件! 现在我们已创建了一个自定义用户控件,并为其添加了一些绝妙的外观状态。现在,我们会将该自定义控件放入我们的主页中并添加一些按钮。然后,我们还将演示如何在 Embedded XAML Runtime 中链接这些按钮,并且让该项目在运行 CE 6.0 的嵌入式设备上运行。 1. 在 LayoutRoot 页面的顶部,您应该看到一个列有“Page.xaml”的选项卡。单击该选项卡打开主页文件。如果看不到该选项卡,可以单击右侧工具箱中的“项目”选项卡,然后通过浏览找到该文件 2. 让我们通过执行与上述自定义圆柱体控件类似的 *** 作来添加渐变,使主页变得更为引人注目 3. 只需在“对象和时间线”工具箱中选择“LayoutRoot”元素,然后单击在屏幕右侧的“属性”选项卡 4. 使用多种不同的渐变和颜色工具来实现您喜欢的背景颜色 5. 那么,现在让我们将自定义控件添加到该页面中 6. 我们需要先快速生成项目,以使自定义控件可以编译成一个资源。为此,转到“项目”->“生成解决方案”菜单项,或者只需单击键盘上的 F5 即可。生成过程将需要一点时间,可能会d出一个 Internet Explorer 窗口。不用理会它,关闭即可 7. 完成此过程后,我们便可以将自定义控件添加到该页面中 8. 在左侧工具面板中单击“资产”按钮 9. 进入“资源库”查看器后,单击“自定义控件”选项卡 10. 将“CylinderUserControl”项拖至您的 LayoutRoot 中 11. 我们需要为我们的元素命名 12. 单击圆柱体,然后在右侧“属性”面板的顶部键入“Cylinder”作为名称 13. 好了!我们仅需向我们的项目中添加三个按钮即可:“填充”按钮、“清空”按钮和“退出”按钮 14. 添加按钮非常简单 15. 在左侧工具栏中单击“按钮”按钮,然后转到您的 LayoutRoot 并拖动,即可在您的项目中创建任意大小的按钮。这样 *** 作三次 16. 现在,再次在左侧工具栏中单击“选择”箭头工具。选择第一个按钮,然后单击右侧面板中的“属性”选项卡(如果它未打开)。在“属性”面板的顶部是“名称”文本框字段。将这些按钮分别命名为“填充”、“清空”和“退出”。另外,您还需编辑每个按钮的“内容”字段,以便按钮显示正确的文本。“内容”字段也位于“属性”面板中 最后一次生成项目并将其保存起来。

推荐你两种方法:

创建自定义控件,改自定义控件由TextBox和Button组合而成。(这个就不给代码了)

修改TextBox的模板或样式。代码如下:

<Window

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:Themes="clr-namespace:Microsoft.Windows.Themesassembly=PresentationFramework.Aero" x:Class="WpfApplication3.MainWindow"

        title="MainWindow" Height="350" Width="525">

<Window.Resources>

<LinearGradientBrush x:Key="TextBoxBorder" EndPoint="0,20" MappingMode="Absolute" StartPoint="0,0">

<GradientStop Color="#ABADB3" Offset="0.05"/>

<GradientStop Color="#E2E3EA" Offset="0.07"/>

<GradientStop Color="#E3E9EF" Offset="1"/>

</LinearGradientBrush>

<Style x:Key="TextBoxStyle1" BasedOn="{x:Null}" TargetType="{x:Type TextBox}">

<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>

<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>

<Setter Property="BorderBrush" Value="{StaticResource TextBoxBorder}"/>

<Setter Property="BorderThickness" Value="1"/>

<Setter Property="Padding" Value="1"/>

<Setter Property="AllowDrop" Value="true"/>

<Setter Property="FocusVisualStyle" Value="{x:Null}"/>

<Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/>

<Setter Property="Stylus.IsFlicksEnabled" Value="False"/>

<Setter Property="Template">

<Setter.Value>

<ControlTemplate TargetType="{x:Type TextBox}">

<Themes:ListBoxChrome x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderFocused="{TemplateBinding IsKeyboardFocusWithin}" SnapsToDevicePixels="true">

<Grid>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="*"/>

<ColumnDefinition Width="20"/>

</Grid.ColumnDefinitions>

<ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>

<Button Grid.Column="1" Background="Blue" />

</Grid>

</Themes:ListBoxChrome>

<ControlTemplate.Triggers>

<Trigger Property="IsEnabled" Value="false">

<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>

<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>

</Trigger>

</ControlTemplate.Triggers>

</ControlTemplate>

</Setter.Value>

</Setter>

</Style>

</Window.Resources>

<Grid>

<TextBox HorizontalAlignment="Left" Height="38" Margin="150,105,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="168" Style="{DynamicResource TextBoxStyle1}"/>

        

</Grid>

</Window>

其中

<Themes:ListBoxChrome x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderFocused="{TemplateBinding IsKeyboardFocusWithin}" SnapsToDevicePixels="true">

<Grid>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="*"/>

<ColumnDefinition Width="20"/>

</Grid.ColumnDefinitions>

<ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>

<Button Grid.Column="1" Background="Blue" />

</Grid>

</Themes:ListBoxChrome>

原来为:

<Themes:ListBoxChrome x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderFocused="{TemplateBinding IsKeyboardFocusWithin}" SnapsToDevicePixels="true">

<ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>

</Themes:ListBoxChrome>

如有疑问,继续追问。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11498109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存