Tag: wpf

有没有办法来检查WPF当前是否在devise模式下执行?

有谁知道一些可用的全局状态variables,以便我可以检查代码当前是否在devise模式下执行(例如在Blend或Visual Studio中)? 它看起来像这样: //pseudo code: if (Application.Current.ExecutingStatus == ExecutingStatus.DesignMode) { … } 我需要的原因是:当我的应用程序在Expression Blend中以devise模式显示时,我希望ViewModel改为使用“Design Customer类”,其中包含模拟数据的devise人员可以在devise模式下查看的数据。 但是,当应用程序正在执行时,我当然希望ViewModel使用返回实际数据的真实Customer类。 目前我通过devise人员解决这个问题,在他开始工作之前,进入ViewModel并将“ApplicationDevelopmentMode.Executing”改为“ApplicationDevelopmentMode.Designing”: public CustomersViewModel() { _currentApplicationDevelopmentMode = ApplicationDevelopmentMode.Designing; } public ObservableCollection<Customer> GetAll { get { try { if (_currentApplicationDevelopmentMode == ApplicationDevelopmentMode.Developing) { return Customer.GetAll; } else { return CustomerDesign.GetAll; } } catch (Exception ex) { throw new Exception(ex.Message); } } […]

平移和缩放图像

我想在WPF中创build一个简单的图像查看器,使用户能够: 平移(通过鼠标拖动图像)。 缩放(使用滑块)。 显示重叠(例如矩形select)。 显示原始图像(如果需要,使用滚动条)。 你能解释一下怎么做吗? 我没有在网上find一个好的样本。 我应该使用ViewBox吗? 还是ImageBrush? 我需要ScrollViewer吗? 谢谢!

如何在WPF中使用Properties.Resources中的图像从代码隐藏中dynamic更改图像源?

我有一个WPF应用程序需要向用户提供有关内部状态的反馈。 devise有三个图像,称为红色,黄色和绿色。 其中一个图像将根据状态一次显示。 这里有几点: 这三个图像位于代码隐藏的Properties.Resources中 一次只显示一个图像。 状态变化来自代码隐藏进程,而不是来自用户。 我想绑定一个图像控件,以便我可以从代码隐藏中更改图像。 我假设我需要一个图像转换器来将JPG图像更改为图像源,例如: [ValueConversion(typeof(System.Drawing.Bitmap), typeof(ImageSource))] public class BitmapToImageSourceConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var bmp = value as System.Drawing.Bitmap; if (bmp == null) return null; return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( bmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); } public object ConvertBack(object value, Type targetType, object parameter, […]

绑定到WPF中的方法?

在WPF的这种情况下,如何绑定到一个对象方法? public class RootObject { public string Name { get; } public ObservableCollection<ChildObject> GetChildren() {…} } public class ChildObject { public string Name { get; } } XAML: <TreeView ItemsSource="some list of RootObjects"> <TreeView.Resources> <HierarchicalDataTemplate DataType="{x:Type data:RootObject}" ItemsSource="???"> <TextBlock Text="{Binding Path=Name}" /> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="{x:Type data:ChildObject}"> <TextBlock Text="{Binding Path=Name}" /> </HierarchicalDataTemplate> </TreeView.Resources> </TreeView> 这里我想绑定到树的每个RootObject上的GetChildren方法。 编辑绑定到一个ObjectDataProvider似乎不工作,因为我绑定到一个项目的列表,并且ObjectDataProvider需要一个静态方法,或者它创build它自己的实例,并使用它。 […]

将描边应用于WPF中的文本块

你如何应用中风(轮廓周围的文字)在WPF的XAML的文本块?

RichTextBox(WPF)没有string属性“文本”

我想设置/获取我的RichTextBox的文本,但文本不在其属性的列表中,当我想获得test.Text … 我在C#中使用代码(.net framework 3.5 SP1) RichTextBox test = new RichTextBox(); 不能有test.Text(?) 你知道怎么可能呢?

你如何做AppBar的对接(屏幕边缘,如WinAmp)在WPF?

是否有任何WPF中的AppBar停靠(如locking屏幕边缘)的完整指导? 我知道有InterOp调用需要做,但我正在寻找基于简单的WPFforms的概念certificate,或者可以消费的组件化版本。 相关资源: http://www.codeproject.com/KB/dotnet/AppBar.aspx http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/05c73c9c-e85d-4ecd-b9b6-4c714a65e72b/

如何隐藏WPF窗口中的closuresbutton?

我在WPF中编写一个modal dialog。 如何设置一个WPF窗口没有closuresbutton? 我仍然喜欢它的WindowState有一个正常的标题栏。 我发现ResizeMode,WindowState和WindowStyle,但是这些属性都不允许我隐藏closuresbutton,但显示标题栏,如在模式对话框中。

窗口与页面与UserControl的WPF导航?

我想知道有人能帮助我。 我是WPF的新手,目前正在编写一个桌面应用程序,但是当把某人redirect到应用程序的新部分时,我似乎无法理解要使用什么东西。 我的select似乎是 窗口 页 用户控件 但我不明白他们之间的区别是什么,什么时候我应该使用每一个。 有人可以解释我的差异,并举例说明你可以使用哪种情况/应用程序?

项目更改时通知ObservableCollection

我在这个链接find ObservableCollection在其中的项目更改时不会注意到(即使使用INotifyPropertyChanged) 一些技巧通知Observablecollection项目已经改变。 在这个链接TrulyObservableCollection似乎是我在找什么。 public class TrulyObservableCollection<T> : ObservableCollection<T> where T : INotifyPropertyChanged { public TrulyObservableCollection() : base() { CollectionChanged += new NotifyCollectionChangedEventHandler(TrulyObservableCollection_CollectionChanged); } void TrulyObservableCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.NewItems != null) { foreach (Object item in e.NewItems) { (item as INotifyPropertyChanged).PropertyChanged += new PropertyChangedEventHandler(item_PropertyChanged); } } if (e.OldItems != null) { foreach […]