有很多时候,多个面板适合我想要的布局,但是我知道不同面板types的渲染时间有所不同。 例如, MSDN指出 一个相对简单的Panel (如Canvas )可以比一个更复杂的Panel (如Grid具有更好的性能。 那么在渲染时间和性能方面,WPF面板的效率是多less? WPF小组: Canvas DockPanel Grid UniformGrid StackPanel WrapPanel VirtualizingPanel / VirtualizingStackPanel 我确信我在网上看到了这个列表,但现在我找不到它了。 我正在寻找的理想答案将为我提供一个按顺序排列的面板列表,以使其渲染速度最快。 我知道孩子的数量是面板效率的一个重要因素,所以为了这个问题,假设每个面板只有一个Label / TextBox对。 另外,我想列举一些例外情况,例如特定的面板,这些面板在某些条件下performance比其他方面好。 更新 根据下面接受的答案总结,专家组的performance是基于子项目的数量和布局,然而总的来说,从最快到最慢的列表是: Canvas StackPanel WrapPanel DockPanel Grid 另外,如果有很多项目不适合在屏幕上,则应始终使用VirtualizingPanel / VirtualizingStackPanel 。 我强烈build议您阅读下面接受的答案以获取更多详细信息,然后再从此列表中select一个项目。
我在WPF有点初学者,所以我问这个.. 比方说,我有一个窗口,窗口里面我想有一个像容器,可能只是边框或面板(以Winformforms)。 容器的内容绑定到选定的选项(例如:button)。 因此,例如,当用户select选项1时,容器显示图表; 当用户select选项2时,容器显示填充数据的列表视图; 当用户selectOPTION 3时,容器会显示另一个事物,依此类推。 什么是最好的/最好的(或者最简单的)方法来做到这一点? 我正在考虑使用用户控件的容器的内容,但不知道这是不是很好的解决scheme既不使用用户控件显示一点点复杂的事情,也许一些计算性能。 任何其他的想法家伙?
您好,我目前有一个texbox打印出信息给用户,当他们按diffrentbutton。 我想知道是否有办法让我的一些文本粗体,而其余的不是。 我曾试过以下几点: textBox1.FontWeight = FontWeights.UltraBold; textBox1.Text. = ("Your Name: " ); TextBox1.FontWeight = FontWeights.Regular; textBox1.Text += (nameVar); 唯一的问题是使用这种方式将使所有的事情变得粗暴或无所作为。 有没有办法做到这一点? 即时通讯使用C#中的WPF项目 任何意见或build议表示赞赏。 谢谢! 编辑:所以现在即时试图做你所有build议的RichText框,但我似乎无法得到任何东西出现在它: // Create a simple FlowDocument to serve as the content input for the construtor. FlowDocument flowDoc = new FlowDocument(new Paragraph(new Run("Simple FlowDocument"))); // After this constructor is called, the new RichTextBox […]
它可以被命名为MVVM模型或不? 因为View通过ViewModelData与DataModel交互。 视图应该只与ViewModelData交互? 我确实在某个地方读过,MVVM模型应该在ViewModel中实现INotify而不是在Model中。 这样对吗? namespace WpfApplication135 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new ViewModelData(); } } public class ViewModelData { public DataModel DM { get; set; } public ViewModelData() { DM = new DataModel(); } } public […]
我目前正在尝试创build一个简单的应用程序,从我制作的API中提取数据并将其显示在列表中。 然后,您应该能够单击列表项目导航到一个图像查看器等详细的查看页面。为了这个工作,我需要导航到一个名为PlanViewer.xaml的页面(目前只适用于Windows Phone应用程序部分,尽pipe这两者虽然)。 对于我的列表工作,我在我的共享App.xaml构build了以下数据模板: <DataTemplate x:Key="PlanDataTemplate"> <StackPanel Orientation="Horizontal"> <Button Name="NavigatePlan" Tag="{Binding FilePath}"> <StackPanel> <TextBlock Style="{StaticResource SubheaderTextBlockStyle}" Text="{Binding Name}" /> <TextBlock Style="{StaticResource TitleTextBlockStyle}" Text="{Binding LastUpdate}" /> </StackPanel> </Button> </StackPanel> </DataTemplate> 我将它应用于我的MainPage.xaml ,如下所示: <ItemsControl x:Name="PlanList" ItemTemplate="{StaticResource PlanDataTemplate}" ItemsSource="{Binding PlanItems}" > <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <VirtualizingStackPanel /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> </ItemsControl> 我不能将任何事件绑定到App.xaml的button,所以我想我需要使用一个ICommand接口。 到目前为止,我可能还有一个更重要的错误。 TL; DR为我的目标:我想调整数据模板,使每个button链接到一个页面PlanViewer.xaml与一个参数描述哪个计划应该显示(例如ID或文件path)。
是否有可能在WPF应用程序中禁用Windows 7的自动窗口停靠function?
美好的一天, 我有一些图像权限的麻烦。 我正在从文件加载图像,resize,然后将其保存到另一个文件夹。 我然后显示这样的: uriSource = new Uri(Combine(imagesDirectoryTemp, generatedFileName), UriKind.Absolute); imgAsset.Source = new BitmapImage(uriSource); 这工作正常,麻烦来了,如果用户然后select另一个图像后,并试图将其保存在原始文件。 保存图像时生成exception"ExternalException: A generic error occurred in GDI+." 经过一番玩耍后,我已经缩小了错误imgAsset.Source = new BitmapImage(uriSource); 作为删除这一行,而不是设置的图像源将允许我覆盖这个文件很多次。 我也试着把源头放在别的东西上,然后重新保存,希望旧的引用能够被处理,事实并非如此。 我怎么能通过这个错误? 谢谢,Kohan 编辑 现在使用这个代码,我没有得到例外,但图像源不更新。 此外,因为我不使用SourceStream,即时消息不知道我需要处理得到这个工作。 uriSource = new Uri(Combine(imagesDirectoryTemp, generatedFileName), UriKind.Absolute); imgTemp = new BitmapImage(); imgTemp.BeginInit(); imgTemp.CacheOption = BitmapCacheOption.OnLoad; imgTemp.UriSource = uriSource; imgTemp.EndInit(); imgAsset.Source = imgTemp;
你知道任何免费的WPF组件在文本框中使用掩码(正则expression式)吗?
我用了 private BitmapImage byteArrayToImage(byte[] byteArrayIn) { try { MemoryStream stream = new MemoryStream(); stream.Write(byteArrayIn, 0, byteArrayIn.Length); stream.Position = 0; System.Drawing.Image img = System.Drawing.Image.FromStream(stream); BitmapImage returnImage = new BitmapImage(); returnImage.BeginInit(); MemoryStream ms = new MemoryStream(); img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); ms.Seek(0, SeekOrigin.Begin); returnImage.StreamSource = ms; returnImage.EndInit(); return returnImage; } catch (Exception ex) { throw ex; } return null; } […]
我见过以下与我的问题有关的线程: WPFcombobox:禁用时的背景颜色 以上处理更改ComboBox的内容模板。 我正在使用WPF,对样式和模板有些新颖,我想将禁用的TextBox的暗灰色背景颜色更改为其他颜色。 我们经常在我们的应用程序中使用TextBoxes ,我们发现默认的颜色设置难以阅读。 我已经制定了以下解决scheme尝试。 但当然,这是行不通的。 有人可以给我一个意见,为什么?