【WPF】wpf笔记本

这篇具有很好参考价值的文章主要介绍了【WPF】wpf笔记本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 对于ListView、ListBox等这些派生自ItemsControl的类,它们的子item的button之类的控件如何绑定到父page或者父window的ViewModel上?

Command="{Binding DataContext.BackupCommand,RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Page}}}"

如果父布局是window,则将x:Type Page改为x:Type Windows.

2. ListBox中的Item当被遮挡了一部分时,点击此item后会先把位置往上移,再次点击才执行相应操作,会让用户误以为一次点击没有效果,需要点击两次。

解决方法是:将ListBox的style中的ScrollView的CanContentScroll属性的值设置为false。

3. 带Hint的TextBox控件

设置TextBox控件的Template属性为:

    <ControlTemplate x:Key="HintTextBoxControlTemplate" TargetType="{x:Type TextBoxBase}">
        <Border CornerRadius="10" x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
            <Grid>
                <TextBlock x:Name="hint" Foreground="LightGray" Margin="10"  Text="{TemplateBinding Tag}"></TextBlock>
                <ScrollViewer x:Name="PART_ContentHost" Focusable="False" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
            </Grid>
        </Border>
        <ControlTemplate.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Opacity" TargetName="border" Value="0.56"/>
            </Trigger>
            <Trigger Property="IsFocused" Value="True">
                <Setter Property="Opacity" TargetName="hint" Value="0"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

把Hint的文字,写在对应的TextBox的Tag标签中。

4.控件选中时设置以控件中心为旋转点

<Image RenderTransformOrigin="0.5,0.5" />

5. 使用Clip对非Border控件设置圆角

样式:

<StackPanel Background="#3b466c" Height="230" Width="320" >
	<StackPanel.Clip>
		<RectangleGeometry  RadiusX="8" RadiusY="8">
			<RectangleGeometry.Rect>
				<MultiBinding Converter="{StaticResource GetRectCvt}" >
					<Binding Path="ActualWidth" RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType=StackPanel}"/>
					<Binding Path="ActualHeight" RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType=StackPanel}"/>
				</MultiBinding>
			</RectangleGeometry.Rect>
		</RectangleGeometry>
	</StackPanel.Clip>
</StackPanel>

转化器:

    public class GetRectConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values?.Length == 2)
            {
                return new Rect(0, 0, (double)values[0], (double)values[1]);
            }

            return new Rect(0, 0, 100, 100);
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            return null;
        }
    }

6. 手动设置WindowState之后,窗口的Left和Top位置不对?

手动获取_actualLeft_actualTop即可:

public static double GetActualLeft(this Window window)
{
	var f = typeof(Window).GetField("_actualLeft", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
	return (double)f.GetValue(window);
}

public static double GetActualTop(this Window window)
{
	var f = typeof(Window).GetField("_actualTop", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
	return (double)f.GetValue(window);
}

7. Template、ItemTemplate、ItemContainerStyle的区别

【WPF】wpf笔记本

8. DragDrop拖拽相关的几个事件

源控件上需要设置:

  1. MouseMove:调用DragDrop.DoDragDrop(obj,obj,obj)设置要传送的数据。
  2. GiveFeedback:可更改鼠标指针外观。持续触发。需要标记为已处理。
  3. QueryContinueDrag:判断用户是否已取消。持续触发。

目标控件上需要设置:

  1. DragEnter:可设置Effectsnone,以拒绝某种类型。
private void lblTarget_DragEnter(object sender, DragEventArgs e)
{
	if(e.Data.GetDataPresent(DataFormats.Text))
		e.Effects = DragDropEffects.Copy;
	else
		e.Effects = DragDropEffects.None;
}
  1. DragLeave
  2. DragOver:类似于MouseMove,在目标控件上移动时持续触发。也可设置Effectsnone,以拒绝某种类型。
  3. AllowDrop:应设置为true
  4. Drop:处理拖拽。 如下:
private void gridFiles_Drop(object sender, DragEventArgs e)
{
	txtTotalCount.Text = "";
	var formats = e.Data.GetFormats();
	if (e.Data.GetDataPresent("FileDrop"))
	{
		_filePaths = (string[])e.Data.GetData("FileDrop");
		txtTotalCount.Text = $"total:{_filePaths?.Count()}";
	}
}

9. DockerManager结构相关

【WPF】wpf笔记本

10. WPF中的空域问题处理

参考:https://github.com/MahApps/MahApps.Metro/wiki/Why-is-WindowsFormsHost-or-WebBrowser-content-annoying-me%3F

11. WPF中如何让WindowsFormsHost透明?

https://blog.csdn.net/x740073529/article/details/124315348文章来源地址https://www.toymoban.com/news/detail-513833.html

到了这里,关于【WPF】wpf笔记本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF真入门教程12--ListView控件

           ListView 控件在Windows应用程序中常用,用于表示数据列表。如果您以前使用过 WinForms,那么您对ListView的实用性有一个很好的了解,但您应该意识到 WPF中的ListView 不像WinForms版本那样使用。再一次的主要区别在于,虽然WinForms ListView只是调用Windows API 函数来呈现常见的

    2024年02月04日
    浏览(38)
  • WPF绑定数据,增删改后实时更新TreeView/ListView

    WPF的界面的确好看,也引入了很多新功能,和winform相比更先进更强大......那么狗儿蛋,代价是什么? 代价就是WPF学起来比较费力。 数据绑定是WPF的特色之一,可以省去写代码更新UI界面的工作。这次打算做一个管理数据的小软件,自然的我也打算在界面上弄个TreeView,然后把

    2024年02月09日
    浏览(42)
  • WPF ListView MVVM模式下数据增加自动滚动到底部

    ListView 设置SelectedIndex属性不会滚动界面,只能通过ScrollIntoView方法设置,所以使用触发器检测 SelectedIndex ,使用扩展属性定义SelectedIndex的行为 手动引入 System.Windows.Interactivity Microsoft.Expression.Interactions xmal中添加声明

    2024年02月14日
    浏览(29)
  • 全坚固笔记本丨工业笔记本丨三防笔记本相较于普通笔记本有哪些优势?

    三防笔记本和普通笔记本在设计和性能方面存在显著差异,三防笔记本相较于普通笔记本具备以下优势: 三防笔记本通常采用耐磨、耐摔的材料,并具有坚固的外壳设计,能够承受恶劣环境和意外碰撞,有效保护内部组件不受损坏。相比之下,普通笔记本的外壳设计可能较为

    2024年04月09日
    浏览(40)
  • 三防笔记本丨加固笔记本丨三防笔记本电脑赋能车辆检修

    随着汽车数量的不断增加和交通运输行业的发展,车辆检修行业成为了保障交通安全和延长车辆寿命的重要领域。在车辆检修过程中,需要使用各种工具和设备来进行检测、维修和保养,而信息化技术的应用正逐渐渗透到这一行业中,为检修工作提供了更高效、更精准的解决

    2024年04月09日
    浏览(76)
  • 星光/宝骏/缤果/长安 车机CarPlay手机操作破解教程V2.0版本(无需笔记本、无需笔记本、无需笔记本)

    之前写了个1.0版本,由于太局限,需要用到笔记本才能操作,很多车友反馈不方便。特此出个手机版教程,简单easy,妈妈再也不用担心我搞不定啦 先卸载车机上的autokit 或者 智能互联 app,这步很关键!!! 工具下载链接 1、在自己的安卓手机上下载安装甲壳虫ADB助手 2、将

    2024年04月17日
    浏览(138)
  • 笔记本外接键盘解决方案:禁用笔记本自带键盘

    笔记本外接键盘时,有时会将外接键盘放置在笔记本自带键盘上,加上现代笔记本设计轻薄,外接键盘(尤其是108键的)在使用过程中经常触碰自带键盘,禁用自带键盘后将提供极大的工作便利。 通过系统自带sc命令禁用PS/2(i8042prt)服务: 禁用服务: 恢复服务: I8042prt是

    2024年02月12日
    浏览(45)
  • 笔记本电脑数据怎么恢复?笔记本电脑数据恢复用什么工具?

    随着互联网时代的发展,电脑的应用越来越广泛,已经深深融入了我们的工作乃至生活当中。其中,笔记本作为可随身携带的电脑设备,其灵活、轻便等优势一直深受大家喜爱。在日常使用过程中,我们会往笔记本里存储各式各样的数据,比如学习课程、手机照片、公司资料

    2024年02月01日
    浏览(48)
  • python编程用什么笔记本好,python用什么笔记本电脑

    大家好,给大家分享一下写python大家都用什么笔记本的,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 大家好,小编为大家解答python编程对笔记本电脑配置的要求的问题。很多人还不知道python编程笔记本电脑推荐便宜,现在让我们一起来看看吧! 大家好

    2024年01月18日
    浏览(44)
  • 树莓派通过网线连接笔记本实现笔记本电脑Wifi的网络共享

    基于windows电脑连接树莓派进行设置:通过通过一根网线,连接树莓派和电脑,使电脑和树莓派构成一个局域网,然后树莓派接收来自笔记本电脑wifi网络的共享网络。操作方法类似台式机通过网线共享笔记本电脑无线网络的步骤 1、 保证笔记本通过“无线网络连接”可以正常

    2024年02月09日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包