我正在使用C#开发WPF中的应用程序。 我把图片放在一个WrapPanel中,并在一个Grid中显示一个边框,并在Button中使用图片。 问题是我的图像控制失去其质量。 我不能在这里发表我的形象,所以我只是在这里描述。 我使用SnapsToDevicePixels="True"作为图像,但仍然看起来很模糊。 更新: 在这里我分享了下面的图片:
会有人知道如何重新创buildWPF中的button样式? 因为我不知道如何制造不同的车厢。 以及2种不同的文字和文字样式?
我有一个小的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的许多不同的地方使用了这个特性,但是对于我来说似乎很不一致的是当你在绑定string中指定“Path =”作为简单的键入要绑定的属性。 例如,以下XAML属性之间的function区别是什么: DataMemberBinding="{Binding SomeProperty}" DataMemberBinding="{Binding Path=SomeProperty}"
9月26日编辑 请参阅下面的完整背景。 tl; dr:数据网格控件导致了奇怪的exception,我正在寻找帮助,隔离原因并find解决scheme。 我已经进一步缩小了这一点。 我已经能够在一个更小的testing应用程序中重现行为,更可靠地触发了不稳定的行为。 我绝对可以排除线程和(我认为)内存问题。 新的应用程序不使用任务或其他线程/asynchronousfunction,我可以简单地触发未处理的exception,只需添加返回常量的属性到DataGrid中显示的对象的类。 这表明,问题是在非托pipe资源耗尽或我还没有想到的问题。 修改后的程序是这样构成的。 我创build了一个名为EntityCollectionGridView的用户控件,它有一个标签和一个数据网格。 在控件的Loaded事件处理程序中,我将一个List<TestClass>分配给1000或10000行的数据网格,让网格生成列。 此用户控件在页面的OnNavigatedTo事件(或Loaded ,它似乎并不重要)的MainPage.xaml中实例化2-4次。 如果发生exception,则会在MainPage显示后立即发生。 有趣的是,这种行为看起来并不随所显示的行数而变化(它将可靠地工作10000行或者可靠地失败,每个网格中只有1000行),而是与所有网格中的总列数在给定的时间加载。 有20个属性显示,4个网格工作正常。 有35个属性和4个网格,抛出exception。 但是,如果我消除两个网格,35个属性相同的类将正常工作。 请注意,我添加到TestClass从20跳到35列的所有属性的forms是: public string StringXYZ { get { return "asdfasdfasdfasdfasf"; } } 所以,在后台数据中没有额外的内存(而且,我不认为内存压力是问题)。 你们都在想什么? 再次,任务pipe理器中的句柄/用户对象/等看起来不错,但有什么我可能会丢失? 原帖 我一直在研究Silverlight Toolkit DataGrid的一个端口到WinRT,在简单的testing(多种configuration和多达10000行)方面做得不错。 然而,正如我试图将其embedded到另一个WinRT应用程序,我已经遇到了一个零星的exception(typesSystem.Exception,在App.UnhandledException处理程序中引发),这是很难debugging。 Not enough quota is available to process this command. (Exception from HRESULT: 0x80070718) 错误始终可重现,但不是确定性的。 也就是说,我可以在每次运行应用程序时都发生这种情况,但是通过执行相同次数的相同步骤并不总是会发生。 该错误似乎发生在页面转换(无论是导航到新的页面,还是回到上一页),而不是(例如)更改DataGrid的ItemsSource时。 应用程序结构基本上是通过层次结构进行recursion访问,每个层次结构都显示一个页面。 […]
如何在样式定义中包含下划线,删除线等文字装饰: <Style x:Key="UnderlinedLabel"> <Setter Property="Control.FontFamily" Value="Trebuchet MS" /> <Setter Property="Control.FontSize" Value="14" /> <!– Next line fails –> <Setter Property="Control.TextDecorations" Value="Underline" /> </Style> 我熟悉使用下面的XAML来强调文本: <TextBlock> <Underline> Underlined text </Underline> </TextBlock> 然而,文本装饰只是另一种风格,我希望能够像FontWeight,FontSize等那样声明性地定义它。 [更新] 我将这种风格应用于Label控件。 这是我的主要问题。 看起来你不能在标签中加下文字。 更改为一个TextBlock(谢谢gix),一切都很好。
我有一个MainResources.xaml文件,其中我有一个样式,它定义了我的应用程序中每个窗口的外观: <Style x:Key="MainBorderStyle" TargetType="{x:Type Border}"> <Setter Property="Background" Value="WhiteSmoke" /> <Setter Property="BorderBrush" Value="LightGray" /> <Setter Property="BorderThickness" Value="1" /> <Setter Property="CornerRadius" Value="5" /> <Setter Property="SnapsToDevicePixels" Value="True" /> </Style> 而不是“WhiteSmoke”,我希望我的背景是这个渐变: <LinearGradientBrush> <GradientStop Color="#ccc" Offset="0"/> <GradientStop Color="#bbb" Offset="1"/> </LinearGradientBrush> 但下面的尝试会导致VS2008告诉我“样式设置器不支持子元素”: <Style x:Key="MainBorderStyle" TargetType="{x:Type Border}"> <Setter Property="Background"> <LinearGradientBrush> <GradientStop Color="#ccc" Offset="0"/> <GradientStop Color="#bbb" Offset="1"/> </LinearGradientBrush> </Setter> <Setter Property="BorderBrush" Value="LightGray" /> […]
以下DataTemplate.DataTrigger使年龄显示为红色,如果它等于 30。 如果年龄大于 30岁,我该如何使年龄显示为红色? <DataTemplate DataType="{x:Type local:Customer}"> <Grid x:Name="MainGrid" Style="{StaticResource customerGridMainStyle}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="100"/> <ColumnDefinition Width="150"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <TextBlock Grid.Column="0" Grid.Row="0" Text="First Name" Margin="5"/> <TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding FirstName}" Margin="5"/> <TextBlock Grid.Column="0" Grid.Row="1" Text="Last Name" Margin="5"/> <TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding LastName}" Margin="5"/> <TextBlock Grid.Column="0" Grid.Row="2" Text="Age" Margin="5"/> <TextBlock x:Name="Age" Grid.Column="1" Grid.Row="2" […]
以前也有类似的问题,但是这个问题试图探索更多的select和传递复杂对象的能力。 问题是如何传递参数,但它确实需要分成三部分。 在XAML应用程序的页面之间导航时,如何传递参数? 使用Uri导航和手动导航有什么区别? 使用Uri导航时,如何传递对象(不只是string)? Uri导航的例子 page.NavigationService.Navigate(new Uri("/Views/Page.xaml", UriKind.Relative)); 手动导航示例 page.NavigationService.Navigate(new Page()); 这个问题的答案适用于WP7,silverlight,WPF和Windows 8。 注意:Silverlight和Windows8是有区别的 Windows Phone:页面被导航到使用Uri,数据作为查询string或实例传递 Windows 8 :通过传递types和参数作为对象来导航页面
当它变为可见时,我将如何使控制淡入/淡出。 以下是我的失败尝试: <Window x:Class="WadFileTester.Form1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="MyWindow" Title="WAD File SI Checker" Height="386" Width="563" WindowStyle="SingleBorderWindow" DragEnter="Window_DragEnter" DragLeave="Window_DragLeave" DragOver="Window_DragOver" Drop="Window_Drop" AllowDrop="True"> <Window.Resources> <Style TargetType="ListView" x:Key="animatedList"> <Style.Triggers> <DataTrigger Binding="{Binding Visibility}" Value="Visible"> <DataTrigger.EnterActions> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0.0" To="1.0" Duration="0:0:5" /> </Storyboard> </BeginStoryboard> </DataTrigger.EnterActions> <DataTrigger.ExitActions> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:5" /> </Storyboard> </BeginStoryboard> </DataTrigger.ExitActions> </DataTrigger> </Style.Triggers> </Style> […]