Tag: wpf

我可以在XAML(.NET 4 Framework之前)中指定genericstypes吗?

在XAML中,我可以声明一个DataTemplate,以便在显示特定types时使用该模板。 例如,这个DataTemplate将使用一个TextBlock来显示一个客户的名字: <DataTemplate DataType="{x:Type my:Customer}"> <TextBlock Text="{Binding Name}" /> </DataTemplate> 我想知道是否有可能定义一个DataTemplate,在任何时候显示IList <Customer>时都会使用它。 所以如果一个ContentControl的内容是一个ObservableCollection <Customer>,它会使用该模板。 是否有可能使用{x:Type}标记扩展在XAML中声明像IList这样的genericstypes?

XAML是否具有debugging模式的条件编译器指令?

我需要这样的样式在XAML中的样式: <Application.Resources> #if DEBUG <Style TargetType="{x:Type ToolTip}"> <Setter Property="FontFamily" Value="Arial"/> <Setter Property="FlowDirection" Value="LeftToRight"/> </Style> #else <Style TargetType="{x:Type ToolTip}"> <Setter Property="FontFamily" Value="Tahoma"/> <Setter Property="FlowDirection" Value="RightToLeft"/> </Style> #endif </Application.Resources>

我如何sorting可观察的集合?

我有一个下面的课: [DataContract] public class Pair<TKey, TValue> : INotifyPropertyChanged, IDisposable { public Pair(TKey key, TValue value) { Key = key; Value = value; } #region Properties [DataMember] public TKey Key { get { return m_key; } set { m_key = value; OnPropertyChanged("Key"); } } [DataMember] public TValue Value { get { return m_value; } set { […]

WPF:自动完成文本框,…再次

这个其他SO问题关于WPF中的自动完成文本框。 有几个人已经build立了这些,并给出了答案之一,build议这个codeproject文章 。 但我还没有find任何WPF自动完成文本框与WinForms自动完成文本框进行比较。 代码项目示例工程,sorting,… 替代文字http://i50.tinypic.com/sx2ej5.jpg …但 它不被构造成可重用的控件或DLL。 这是我需要embedded到每个应用程序的代码。 它只适用于目录。 它没有用于设置自动完成源仅为文件系统目录还是文件系统文件或….等的属性。 当然,我可以编写代码来做到这一点,但是…我宁愿使用别人已经编写的代码。 它没有属性来设置popup窗口大小等 有一个popup列表框,提供可能的完成。 浏览该列表时,文本框不会更改。 在列表框中键入字符并不会导致文本框被更新。 从列表框导航焦点不会使popup式列表框消失。 这很混乱。 所以,我的问题是: *有没有人有一个免费的WPF自动完成文本框工作 ,并提供一个高品质的用户体验? 回答 以下是我如何做到的: 0.0。 获得WPF工具包 0.1。 运行WPF工具包的MSI 0.2。 在Visual Studio中,从工具箱(特别是数据可视化组)拖放到UI Designer中。 它在VS工具箱中看起来像这样: 替代文字http://i49.tinypic.com/s12q6x.jpg 如果你不想使用devise师,手工制作xaml。 它看起来像这样: <toolkit:AutoCompleteBox ToolTip="Enter the path of an assembly." x:Name="tbAssembly" Height="27" Width="102" Populating="tbAssembly_Populating" /> …工具箱命名空间以这种方式映射的地方: xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" 0.3。 提供Populating事件的代码。 这是我用的: private void tbAssembly_Populating(object […]

我在哪里可以得到线程安全的CollectionView?

在后台线程上更新业务对象的集合时,出现以下错误消息: 这种types的CollectionView不支持从与分派器线程不同的线程对其SourceCollection的更改。 好的,这是有道理的。 但是它也提出了一个问题,哪个版本的CollectionView支持multithreading,如何让我的对象使用它?

为什么MVVM和它的核心好处是什么?

为什么我们在处理WPF时通过MVC或MVP去使用MVVM? 使用这个额外的好处是什么? 编辑: 说实话,今天我接受了一个采访,我被问到了这个问题。 我回答像INotifyPropertyChanged,ICommand,IValue转换器..但他不满意。 从今以后,我提出了这个问题 提前致谢

通过等待任务或访问它的Exception属性,没有观察到任务的exception。 结果,没有被察觉的例外是

这是什么意思,如何解决? 我正在使用TPL任务。 整个错误 通过等待任务或访问它的Exception属性,没有观察到任务的exception。 结果,终结者线程重新抛出了未观察到的exception。 在System.Threading.Tasks.TaskExceptionHolder.Finalize() mscorlib程序

如果选中,请更改ListBox项目的WPF DataTemplate

我需要根据是否select该项目来更改列表框中项目的DataTemplate(选中时显示不同/更多的信息)。 当单击有问题的ListBox项(仅通过Tab键)时,DataTemplate(StackPanel)中的最顶层元素上没有出现GotFocus / LostFocus事件,而且我没有任何想法。

validation错误WPF风格,类似于Silverlight

默认情况下, WPF中的Validation.ErrorTemplate只是一个没有任何ToolTip的小红色边框。 在Silverlight 4中 ,validation错误是非常好的样式。 以下是Silverlight 4和WPF中的validation错误的比较 Silverlight 4 WPF 注意到WPF版本的平坦,无聊的外观,相比之下,在我看来,在Silverlight的好看。 在WPF框架中是否存在任何类似的validation样式/模板,或者是否有人创build了像上面的Silverlight版本那样的很好的样式validation模板? 或者我将不得不从头开始创build它们? 如果有人想尝试一下,上面的validation错误可以重现与下面的代码,适用于Silverlight和WPF 主窗口/ MainPage.xaml中 <StackPanel Orientation="Horizontal" Margin="10" VerticalAlignment="Top"> <TextBox Text="{Binding Path=TextProperty, Mode=TwoWay, ValidatesOnExceptions=True}"/> <Button Content="Tab To Me…" Margin="20,0,0,0"/> </StackPanel> 主窗口/ MainPage.xaml.cs中 public MainWindow/MainPage() { InitializeComponent(); this.DataContext = this; } private string _textProperty; public string TextProperty { get { return _textProperty; } set { […]

UI线程上的任务继续

是否有一种“标准”方式来指定任务继续应该在创build初始任务的线程上运行? 目前我有下面的代码 – 它正在工作,但跟踪调度,并创build第二个行动似乎是不必要的开销。 dispatcher = Dispatcher.CurrentDispatcher; Task task = Task.Factory.StartNew(() => { DoLongRunningWork(); }); Task UITask= task.ContinueWith(() => { dispatcher.Invoke(new Action(() => { this.TextBlock1.Text = "Complete"; } });