Tag: wpf

从代码设置应用程序资源

我有一个作为WPF应用程序的ac #project但我现在想把它构建为一个dll。 我以前通过从项目中删除app.xaml并将其构建类型设置为dll来完成此操作。 我现在的问题是app.xaml包含一些xaml来实例化应用程序变量。 为了解决这个问题,我试图以编程方式在将要调用的第一个xaml窗口中设置这些应用程序变量。 我试图在代码中模拟的xaml是: 这是我的代码: ResourceDictionary myResourceDictionary = new ResourceDictionary(); myResourceDictionary.Source = new Uri(“C:\\Resources\\Styles\\Shared.xaml”); Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary); myResourceDictionary.Source = new Uri(“C:\\Resources\\Styles\\ToolBar.xaml”); Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary); myResourceDictionary.Source = new Uri(“C:\\Resources\\Styles\\GroupBox.xaml”); Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary); myResourceDictionary.Source = new Uri(“C:\\Resources\\Styles\\ZoomBox.xaml”); Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary); myResourceDictionary.Source = new Uri(“C:\\Resources\\Styles\\ScrollBar.xaml”); Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary); myResourceDictionary.Source = new Uri(“C:\\Resources\\Styles\\Expander.xaml”); Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary); myResourceDictionary.Source = new Uri(“C:\\Resources\\ApplicationToolbar.xaml”); Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary); myResourceDictionary.Source = new Uri(“C:\\Resources\\DesignerItem.xaml”); Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary); myResourceDictionary.Source = new […]

在Aero上覆盖WPF中的按钮背景

因此,希望很简单,将按钮的背景更改为LightGreen,当鼠标光标hover在其上时为绿色,按下时将DarkGreen更改为DarkGreen。 以下XAML是我的第一次尝试: Hello 但是,唉,这不起作用。 我们只是实现目标的1/3。 是的,按钮变为浅绿色,但只要将鼠标hover在按钮上或按下它,您就会获得相应按钮状态的标准Aero镀铬。 不想放弃,我尝试以下放荡: … Hello … 现在我们已经从Aero.NormalColor.xaml中获得了整个friggin’控制模板。 唉,这没什么改变。 然后我从Microsoft_Windows_Themes:ButtonChrome元素中删除两个属性( RenderPressed和RenderMouseOver )。 不过,没有变化。 然后我删除Button的Background属性的设置,只留下PresentationFramework.Aero程序集的名称空间声明: … Hello … 最后,我们取得了进展。 我们已经从1/3的要求变为2/3,IsMouseOver和IsPressed工作,但在按钮的正常状态(没有被碾压或按下)时没有浅绿色背景,因为我已经删除了按钮的Background属性,以使其他两个状态应用并可见。 现在,在这个疯狂的XAML无法让我们获得正常按钮状态的LightGreen背景之后,我修改了样式以在那里抛出背景颜色: <Button xmlns… <ControlTemplate… … 最后,它按预期工作。 我是疯了,还是这些(以及更多)你必须通过Aero主题来改变一个按钮的背景颜色(正常,hover,按下)? 也许,如果我不必将整个dang ButtonTemplate包含在那里,只是为了从中删除两个属性( RenderMouseOver和RenderPressed ),生活就不会那么糟糕。 谢谢你的帮助 – 我结束了。 更新:但等待还有更多。 而不是从控件模板中删除RenderMouseOver和RenderPressed属性,只需从以下位置更改它们: <Microsoft_Windows_Themes:ButtonChrome SnapsToDevicePixels="true" … RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}" … 至: <Microsoft_Windows_Themes:ButtonChrome SnapsToDevicePixels="true" … RenderMouseOver="{Binding IsMouseOver}" RenderPressed="{Binding IsPressed}" … […]

如何播放WPF声音文件资源

我正在尝试在我的WPF应用程序中播放声音文件。 目前我有以下电话: private void PlaySound(string uriPath) { Uri uri = new Uri(@”pack://application:,,,/Media/movepoint.wav”); var player = new MediaPlayer(); player.Open(uri); player.Play(); } 现在,如果我将Media/movepoint.wav指定为构建操作Content并将其作为相对或绝对文件路径加载它工作正常,所以我怀疑这与Pack URI ,但我不能为我的生活弄清楚什么。 目标是将文件存储为资源,以使其在输出目录中不可用。 我可以提供WAV副本或MP3副本。

如何在不打开另一个窗口的情况下将PowerPoint演示文稿嵌入到WPF应用程序中?

目前我在C#中有一个WPF应用程序,但我发现找到任何有用的方法将PowerPoint演示文稿嵌入到我的窗口中是非常困难的。 我在这里找到了一个解决方案: 将Powerpoint节目嵌入到C#应用程序中 此解决方案产生了在另一个窗口中运行PowerPoint的问题,但只是在WPF应用程序中显示其UI。 这意味着当WPF窗口被聚焦时,PowerPoint演示文稿没有,并且停止播放。 当窗口关闭时,还存在PowerPoint崩溃的问题。 我找到的另一个解决方案是: http : //www.codeproject.com/Articles/118676/Embedding-PowerPoint-presentation-player-into-a-WP 解决方案很受欢迎,但我发现它很难处理。 我不知道任何Win32编程,或者C ++,所以我发现它很难修改。 我设法让它停止显示PowerPoint的第二个副本(原始项目中的预期function),但我还没有找到一种方法来自动打开PowerPoint演示文稿。 所以我需要的是一种自动和在后台干净地打开PowerPoint演示文稿的方法(我不希望在任何时候显示PowerPoint UI),并允许它自动运行(而不是响应输入)应用程序正在运行。 如果我能将它保存在C#和WPF中,并且不必处理Win32和C ++,那将是非常好的。 这可能吗? 在这一点上,我真的后悔这个项目只是因为PowerPoint集成的麻烦。

如何在WPF中绑定命令

有时我们使用复杂的方法很多次,我们忘记了完成任务的最简单方法。 我知道如何进行命令绑定,但我总是使用相同的方法。 创建一个实现ICommand接口的类,并从视图模型中创建该类的新实例,绑定就像一个魅力。 这是我用于命令绑定的代码 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = this; testCommand = new MeCommand(processor); } ICommand testCommand; public ICommand test { get { return testCommand; } } public void processor() { MessageBox.Show(“hello world”); } } public class MeCommand : ICommand { public delegate void ExecuteMethod(); private ExecuteMethod […]

在WPF中渲染清晰的线条

如果我呈现以下内容: 我得到这个结果(Kaxaml): 注意两个形状之间的细白线。 我四处搜索,发现这与像素对齐有关。 我希望设置SnapsToDevicePixels=”True”足以摆脱该行,但这不起作用! 任何想法如何摆脱白线?

Caliburn Message.Attach()抛出“找不到方法的目标”

我有一个列表框,我正在为ItemContainer设置样式以包含上下文菜单。 这是同样的xaml。 … 我在ViewModel中编写了目标方法,如下所示。 public void DeleteGroup() { //ToDo … } ViewModel被设置为UserControl的DataContext,其中有ListBox。 上面的代码导致“找不到方法的目标” 。 我不确定为什么这不起作用。 我也尝试过以下变化 其中UCRelayDispositionView是UserControl的名称。 为什么上面的代码不起作用? 编辑:1还尝试了以下内容 还有这个 编辑:2我试图在ItemContainer上以下列方式使用Tag,但它也不起作用。 编辑3:绑定错误 System.Windows.Data Error: 40 : BindingExpression path error: ‘PlacementTarget’ property not found on ‘object’ ”MenuItem’ (Name=”)’. BindingExpression:Path=PlacementTarget.Tag; DataItem=’MenuItem’ (Name=”); target element is ‘MenuItem’ (Name=”); target property is ‘TargetWithoutContext’ (type ‘Object’) System.Windows.Data Error: 4 : […]

在WPF / XAML中显示本地时区的时间

我的应用程序在几个不同的设备上同步数据。 因此,它将所有日期存储在UTC时区中,以考虑可能设置为不同时区的不同设备。 麻烦的是,当我读回日期并显示它们时,它们似乎是不正确的(大多数用户都在英国夏令时,所以他们落后一小时)。 我是否需要手动覆盖UI线程的set CurrentCulture属性? 我知道我必须在Silverlight中这样做。

如何通过样式设置事件function?

我有几个GUI控件元素,其中一些应该在鼠标交互(MouseEnter,MouseLeave)上生成相同的操作(代码隐藏函数调用)。 [edit] 我在我的事件处理程序中执行一些非样式相关的function。 现在我在每个控件中使用事件属性: 由于此示例中的许多控件都调用相同的两个函数“GeneralMouseEnter”和“GeneralMouseLeave”,因此我希望能够定义一个样式或类似的东西来封装该行为。 [编辑 – 澄清] 这应该会在以后成为一种插件。 (将代码和XAML文件包含到任何GUI程序中,并在每个交互式控件元素上设置样式……) 根据我在网络上发现的内容,我可以像本示例中那样使用EventTriggers : 我不知道是否以及如何在一个动作中调用函数。 是否可以通过创建一个带有action + trigger的样式来应用于每个控件来获得此function? 怎么做? 如何为一个控件分配多个样式(用于多个交互事件)? 是否有更简洁的方法来实现这种行为? [编辑] 如果我想在GUI中的所有滑块上进行鼠标交互,我该怎么办?

如何从用户的计算机获取有用的WPF .NET错误信息?

我有一个WPF应用程序崩溃了一旦我把它安装到没有安装开发环境的机器上 – 如果这是一个骗局,我欢迎关闭,但我的搜索function未能找到一个相同的问题。 看来我得到了一个XamlParseException,但没有比这更有用了。 我需要获得有用的信息。 浏览Windows 7事件日志会给我这个错误日志: Fault bucket , type 0 Event Name: CLR20r3 Response: Not available Cab Id: 0 Problem signature: P1: MyApp.exe P2: 1.0.0.0 P3: 4b88323d P4: PresentationFramework P5: 3.0.0.0 P6: 4a174fbc P7: 624f P8: e1 P9: System.Windows.Markup.XamlParse P10: Attached files: C:\Users\Mark\AppData\Local\Temp\WER7DC.tmp.WERInternalMetadata.xml These files may be available here: C:\Users\Mark\AppData\Local\Microsoft\Windows\WER\ReportArchive \AppCrash_generatortestbed_4fa7dff09a9e893eb675f488392571ced4ac8_04ef1100 Analysis symbol: […]