Tag: wpf

如何计算其已知字体大小和字符的WPF TextBlock宽度?

比方说,我有TextBlock与文本“一些文本”和字体大小10.0 。 我如何计算适当的TextBlock 宽度 ?

如何反转BooleanToVisibilityConverter?

我在WPF中使用BooleanToVisibilityConverter将控件的Visibility属性绑定到Boolean 。 这工作正常,但我想要一个控件隐藏,如果布尔是true ,并显示它是false 。

用于保存WPF应用程序中的用户设置的方法?

你推荐什么方法在WPF窗口(桌面)应用程序中保持用户设置? 请注意,这个想法是,用户可以在运行时更改设置,然后closures应用程序,然后在启动应用程序后,应用程序将使用当前设置。 有效的话,它会显示好像应用程序设置不会改变。 Q1 – 数据库还是其他方法? 我有一个SQLite数据库,我将无论如何使用,因此使用数据库中的表将是一样好任何方法? Q2 – 如果数据库:什么数据库表devise? 一个表有不同数据types的列(例如string , long , DateTime等),或者只是一个表格,其中的值必须是序列化和反序列化的值。 我想第一个会更容易,如果没有太多的设置,开销不大? Q3 – 可以使用应用程序设置吗? 如果有的话,还有什么特别的任务需要在这里实现持久性? 在这种情况下,在应用程序设置devise器中重新使用“默认”值会发生什么情况? 默认会覆盖在运行应用程序之间保存的任何设置吗? (或者你是否需要不使用默认值)

WPF:有没有一种方法来覆盖ControlTemplate的一部分,而不重新定义整个样式?

我想风格WPF xctk:ColorPicker。 我想更改下拉视图和文本的背景颜色,而不用重新定义整个样式。 我知道ColorPicker包含一个名为“PART_ColorPickerPalettePopup”的零件。 有没有一种方法可以在我的风格中直接引用这个部分,例如只提供一个新的背景颜色? 我想避免重新定义“PART_ColorPickerPalettePopup”的所有其他属性。 链接到我所描述的ColorPicker

WPF WebBrowser控件 – 位置:固定滚动时元素跳转(Windows 8)

我们使用WPF WebBrowser控件来显示embedded式页面。 在Windows 8上,我们观察到一个奇怪的CSS元素的跳跃行为:滚动时固定。 在Windows 8(也是FF,Chrome)上的IE10以及Windows 7上的WPF WebBrowser控件中,相同的页面可以正常工作。 有没有人见过这种行为之前,知道跳跃运动的修复? 与开发机器上的.Net版本4相比,testing机器(Surface with Win 8)上使用的.NET版本4.5是否成为问题? 开发环境: Windows 7的 Microsoft Visual Studio 2010版本10.0.30319.1 RTMRel Microsoft .NET Framework版本4 testing环境: 表面 Windows 8 Microsoft .NET Framework版本4.5 客户端XAML: <Window x:Class="EmbeddedBrowserTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <WebBrowser HorizontalAlignment="Stretch" Name="webBrowser" VerticalAlignment="Stretch" Grid.Row="1" /> </Grid> </Window> 演示页面HTML: <!DOCTYPE html> <html> <head> <meta http-equiv="X-UA-Compatible" […]

如何在wpf背景中执行任务,同时能够提供报告并允许取消?

我想在点击一个wpfbutton后执行一个长时间运行的任务。 在这里,我做了什么。 private void Start(object sender, RoutedEventArgs e) { for (int i = 0; i < 10; i++) { Thread.Sleep(2000); // simulate task } } 问题是,这将使wpf gui无响应。 我也想每隔1秒允许取消和报告进度。 我展开下面的代码。 DispatcherTimer dispatcherTimer = new DispatcherTimer(); // get progress every second private int progress = 0; // for progress reporting private bool isCancelled = false; // cancellation […]

为什么将ScrollViewer.CanContentScroll设置为false会禁用虚拟化

正如大多数WPF开发人员所知,将ScrollViewer.CanContentScroll设置为false将禁用虚拟化; 但我想知道它是如何工作的,因为我尝试启用虚拟化,同时将ScrollViewer.CanContentScroll设置为false 。

我怎样才能dynamic地添加一个RowParameters到GridPanelTemplate?

我有一个固定数量的列和未知数量的行的网格。 行数在构造函数中设置一次。 <ItemsControl Name="myItemsControl" ItemsSource="{Binding Cells}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <Grid Name="myGrid"> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <!– some rows should be added here –> </Grid.RowDefinitions> </Grid> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemContainerStyle> <Style…/> </ItemsControl.ItemContainerStyle> </ItemsControl> 我已经尝试了下面这行代码,但是它返回null: object obj = myItemsControl.Template.FindName("myGrid", myItemsControl); 我怎样才能在代码中添加行到“myGrid”?

如何获取WPF中当前屏幕的大小?

我知道我可以通过使用获取主屏幕的大小 System.Windows.SystemParameters.PrimaryScreenWidth; System.Windows.SystemParameters.PrimaryScreenHeight; 但是,我如何获得当前屏幕的大小? (多屏用户不总是使用主屏幕,并不是所有的屏幕都使用相同的分辨率,对吧?) 能够从XAML访问大小将是很好的,但是从代码(C#)来完成就足够了。

OneWayToSource绑定似乎在.NET 4.0中被破坏

OneWayToSource绑定似乎在.NET 4.0中被破坏 我有这个简单的Xaml <StackPanel> <TextBox Text="{Binding TextProperty, Mode=OneWayToSource}"/> <Button/> </StackPanel> 我的代码看起来像这样 public MainWindow() { InitializeComponent(); this.DataContext = this; } private string m_textProperty; public string TextProperty { get { return "Should not be used in OneWayToSource Binding"; } set { m_textProperty = value; } } 在.NET 3.5中,这个工作正如你可能除外。 在TextBox放置一些文本,按下Tab键使其失去焦点, TextProperty更新文本TextBoxinput的任何文本 在.NET 4.0中 ,如果我在TextBox键入一些文本,然后按下Tab使其失去焦点,则TextBox将恢复为TextProperty的值(意思是“不应在OneWayToSource绑定中使用” )。 这是重新阅读旨在.NET 4.0中的OneWayToSource绑定? 我只是希望TextBox将其值推入TextProperty而不是其他方式。 […]