Tag: wpf

UserControl的DataContext

我正在创build一个UserControl我想要使​​用这样的东西: <controls:ColorWithText Color="Red" Text="Red color" /> 到目前为止,我已经实现了类似这样的控制: <UserControl x:Class="Namespace.ColorWithText" Name="ThisControl"> <StackPanel Orientation="Horizontal" > <Border Width="15" Height="15" Background="{Binding Color, ElementName=ThisControl}" /> <TextBlock Text="{Binding Text, ElementName=ThisControl}" /> </StackPanel> </UserControl> 其中Color和Text是在代码中定义的控件的依赖项属性。 这工作,但每次指定ElementName似乎没有必要。 另一个可行的select是使用 <UserControl x:Class=… DataContext="{Binding ElementName=ThisControl}" Name="ThisControl"> 而不是指定ElementName ,但是这对我来说也不是一个干净的解决scheme。 我有两个问题: 为什么不<UserControl DataContext="{RelativeSource Self}">工作? 什么是这样做的最好方法?

在VS2010中将WPF的devise器从XAML窗口中分离出来

我没有看到一个button来从Visual Studio 2010中的WPF的XAML窗口中分隔devise器窗口。 我有三个屏幕,我想要一个全屏XAML窗口和一个全屏幕devise器窗口。

WPF中的图像变得模糊

我正在使用C#开发WPF中的应用程序。 我把图片放在一个WrapPanel中,并在一个Grid中显示一个边框,并在Button中使用图片。 问题是我的图像控制失去其质量。 我不能在这里发表我的形象,所以我只是在这里描述。 我使用SnapsToDevicePixels="True"作为图像,但仍然看起来很模糊。 更新: 在这里我分享了下面的图片:

WPF C#button样式

会有人知道如何重新创buildWPF中的button样式? 因为我不知道如何制造不同的车厢。 以及2种不同的文字和文字样式?

命名空间clr-namespace <…>中不存在名称<…>

我有一个小的WPF应用程序,用于编译就好,但现在不是了。 我不能说它停止build设的时候。 它有一天工作得很好,接下来不是。 这是项目结构: 除了标准的.net dll之外,没有其他项目或外部参考。 下面是用户控制问题的起源: <UserControl x:Class="TimeRecorder.HistoryUserControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:TimeRecorder.ViewModel" xmlns:framework="clr-namespace:TimeRecorder.Framework" mc:Ignorable="d" Height="Auto" Width="Auto" Padding="5"> <UserControl.Resources> <local:HistoryViewModel x:Key="ViewModel"/> <framework:BoolToColorConverter x:Key="ColorConverter"/> </UserControl.Resources> <StackPanel DataContext="{StaticResource ViewModel}"> 这里是我得到的错误: 请注意,这不仅仅是截图中的一个文件,而是我在本项目的所有用户控件/窗口文件中以xaml类似的方式添加的所有引用。 所以文件就在那里,文件中的命名空间是正确的,xaml文件中的命名空间/类名是(据我了解)是正确的。 当我inputxaml时,我得到了intellisense,所以它find的文件确定,但不是编译时。 在其他post中最常见的解决scheme是.NET框架版本。 目前,我的主要和testing项目都设置为.Net Framework 4。 完整版本不是客户端configuration文件。 这是我想我搞砸了:在configurationpipe理器,这两个项目的平台设置为任何CPU,但有一次,当试图解决这个问题我注意到,主项目设置为x86和testing项目设置为任何中央处理器。 所以我在configurationpipe理器中为主项目手动添加了Any CPU。 但是,我真的不知道我是否正确地做了这件事,即使我应该这样做。 所以作为一个额外的问题,有没有办法可以将configurationpipe理器重置为默认状态? 这有什么要说的主要问题? 我不知道如果主项目总是设置为x86或不知道如果我改变它到x86然后它打破。 如上所述,这个项目正在编译一段时间。 有什么build议么? 我会回答更详细的代码或任何问题,而不是在这里散漫:)

WPF中MVVM的一句话解释?

我听说它是​​构buildWPF UI的下一个最好的例子,但是所有现有的例子都有几十行代码 – 我可以得到一个MVVM的Hello World,它毫不含糊地解释了它的一切吗? 我对C#/ .net也是一个新手,所以也许可以指点一些可以帮助的资源? 非常感激!

wpf DocumentViewer – 通过GlyphRun获得ITextPointer,反之亦然

只是想知道是否有人试图入侵WPF DocumentViewer ,以使其更有用。 我已经花了差不多一个星期的时间来尝试为这个控件创build更强大的API,基于我使用reflection提取的方法。 每个人都知道如何通过reflection从文档查看器中获取选定的文本,但是我的任务更复杂。 所选文本具有返回ITextPointers End和Start属性。 此外,我有一个使用此代码提取GlyphRuns的集合。 现在最后我想知道哪个GlyphRun包含select开始。 所以我想知道如何将ITextPointers转换成GlyphRuns ,反之亦然。 我知道他们没有1:1的关系。 这封闭的API控制和上周花费在reflection器不让我睡好。 我希望也许有人试过,或者看过代码示例,并能够引导我通过这些丛林。

WPF:如何从ViewModel发送一个事件信号到代码隐藏没有代码视图?

我有相当简单的(我希望:))问题: 在MVVM中,View通常监听ViewModel属性的变化。 不过,我有时候喜欢听事件,例如,View可以在VM信号时开始animation,或者closures窗口。 通过使用NotifyPropertyChanged的bool属性来做到这一点(只有当它从false更改为true时才开始animation)是可能的,但感觉像是一个黑客攻击,我更喜欢暴露事件,因为它在语义上是正确的。 此外,我想这样做没有代码在代码隐藏,因为做viewModel.myEvent += handler将意味着我会手动取消注册该事件,以便允许查看GC'D – WPF视图已经能听'属性'弱',我更喜欢编程只声明在视图。 标准的强大的事件订阅也是不好的,因为我需要切换多个视图模型为一个视图(因为每次创build视图需要太多的CPU时间)。 谢谢你的想法(如果有一个标准的解决scheme,一个链接到MSDN就足够了)!

位图性能优化模式

我发现了几种优化WPF中的位图处理的模式。 但是,我不知道何时使用每种模式。 正如我认为这是一个普遍的问题,我总结了我的理解和我的猜想,并寻求你的帮助。 如果你可以添加模式 ,解释它们的不同之处 ,说明它们是使用CPU还是使用GPU ,以及什么时候使用它们以及如何合并它们 ,那将会是一个巨大的帮助! 上下文 – 图片“网格”场景: 我的应用程序必须显示许多位图图像。 图像显示在屏幕上的行和列网格组织(不一定是网格或UniformGrid类,认为窗口媒体播放器的相册视图)。 图像可能会在不同的网格单元之间移 任意单元格中的一些图像可能被其他单元replace。 图像应该是可点击的,应该提供一个上下文菜单,应该是可select的,可拖拽的等等。换句话说,“将小编辑器合并成一个大的位图”是不适用的,至less不是天真的。 模式0:黑客 把这些小杂烩混合成一个位图(如何绘制上下文?),并将其作为背景。 覆盖这与图像与空的内容,将处理命中,上下文菜单,事件等 优点是我们只在这里讲两个位图:当前显示的和应该replace的位图。 这应该是非常快的。 但是,我多年的经验提高了危险的红旗。 你的评论? 模式1:缩小图像大小 当你事先知道要调整的图像大小,以及当你准备失去performance的细节(颜色)时,这是一个不容小觑的过程: 使用BitmapImage.DecodePixelWidth减小位图大小 使用FormatConvertedBitmap.DestinationFormat减less颜色信息 将控件的缩放行为设置Image.Stretch设置为Stretch.None 将图像的SetBitmapScalingMode设置为LowQuality。 冻结bug子手 在这里看代码。 模式2:背景预取 当您认为您可以利用用户凝视屏幕上的图像并准备好接下来要显示的图像时,此模式适用。 除了内存开销之外,项目的缺点是必须支持.Net Framework 4目标,而不仅仅是客户端configuration文件,因此可能会导致客户端上的安装。 你自己将不得不忍受asynchronous编程的痛苦。 在这种模式下,您可以创build所需数量的图像控件。 当需要添加,移动或删除位图时,只能修改图像控件的位图源。 BackgroundWorker任务负责预取BitmapSource(可能使用上面的“缩小图像大小”模式)并将其插入到MemoryCache中。 为此,您必须将BitmapImage的CacheOption设置为OnLoad,以便工作被卸载到后台工作者。 模式3:绘图上下文 这是Microsoft支持部门的Sheldon Ziao在MSDN WPF论坛上提出的build议。 请参阅Adam Nathan的WPF 4的第15章“2Dgraphics”中的494页,了解DrawingContext的描述。 我不能说我明白这一点。 根据这里的答案,我会认为这将改善处理几何图纸,而不是位图。 接下来,我不认为这将支持图像的焦点和事件要求(我不好意思,因为没有在论坛上更好地解释要求)而且,我担心这本书的总结性的句子:“请注意,使用DrawingContext不会改变您在保留模式系统中运行的事实。 指定的绘图不会立即发生; 这些命令被WPF所保留,直到需要为止。“这意味着,一旦我们的处理程序重新开始,我们就不能像”后台预取“那样利用并行性。 模式4:可写位图 这里的MSDN文档将其描述为双缓冲系统:您的UI线程更新缓冲区; […]

我怎么知道什么监视器的WPF窗口

在C#应用程序中,如何查找WPF窗口是否在主监视器或另一个监视器中?