草庐IT

c# - 如何从 xaml 访问 UserControl 中的按钮?

在工作中我有几个页面,每个页面的按钮都在相同的位置,并且具有相同的属性。每个页面也有细微差别。为此,我们创建了一个userControl模板并将所有按钮放入其中,然后将该用户控件应用于所有页面。但是,现在很难从每个页面的xaml访问按钮并修改它们,因为它们位于页面上的UserControl中......如何从每个页面优雅地访问按钮?我尝试过的:目前,我们绑定(bind)了一堆依赖属性。我不喜欢这个选项,因为我有很多按钮,并且需要控制这些按钮的很多属性。其结果是数百个依赖属性,当我们需要更改某些内容时,要费力地处理一团糟。另一种方法是使用样式。我通常喜欢这种方法,但是因为这些按钮在另一个

c# - RelayCommand<T> 上的 CanExecute 不起作用

我正在使用MVVMLightV3alpha3编写一个WPF4应用程序(使用VS2010RC),我在这里遇到了一些奇怪的行为......我有一个命令可以打开Window,并且那个Window创建了ViewModel等等-没有什么奇怪的。在那Window我有一些RelayCommand例如:CategoryBeenSelected=newRelayCommand(()=>OnCategoryUpdate=true);没有什么奇怪的-它按我预期的那样工作。问题是我不能使用通用RelayCommand的CanExecute方法/lambda表达式。这个有效:DeleteCategoryComm

c# - ItemsControl 拖放

我有一个ItemsControl,它带有一个绑定(bind)到整数ObservableCollection的DataTemplate。在Windows资源中:我正在尝试实现在ItemsControl中拖放项目的能力(即能够对整数重新排序)。有没有人有一个简单的例子来说明如何做到这一点?我连接了PreviewMouseMove、DragEnter和Drop事件。问题是我无法弄清楚如何确定正在拖动哪个项目以及它被拖到哪里。似乎整个ItemsControl都传递到了事件中。 最佳答案 这是我如何完成的示例。XAML:View模型:clas

c# - 如何在不关闭的情况下将 "Hide()"模式 WPF 窗口?

我有一个在后台线程上运行的WPF窗口,作为一种“通知程序窗口”...当引发事件时,它会显示一条消息...用户单击“贪睡”按钮,我调用this.Visibility=Visibility.Collapsed我隐藏窗口的那一刻(通过调用this.Hide()或如上所述设置Visibility)...“ShowDialog()"代码释放并关闭窗口。这绝对是WPF代码中的错误(我已通过反射器识别)...但我的问题仍然存在。有没有人能够想出解决此问题的方法?我已经尝试了很多东西,现在正在向你们这些聪明的人伸出援手:) 最佳答案 您无法隐藏模态

c# - 如何传播 DependencyProperty 中的 PropertyChanged 更改

我有一个实现INotifyPropertyChanged的​​类。此类的实例在窗口中声明为DependencyProperty,例如publicIMyClassMyClass{get{return(IMyClass)GetValue(MyClassProperty);}set{SetValue(MyClassProperty,value);}}publicstaticreadonlyDependencyPropertyMyClassProperty=DependencyProperty.Register("MyClass",typeof(IMyClass),typeof(MainWin

c# - 观察集合中项目的 PropertyChanged

我正在尝试挂接到集合中INotifyPropertyChanged对象上的事件。我见过的这个问题的每个答案都说要按如下方式处理:voidNotifyingItems_CollectionChanged(objectsender,NotifyCollectionChangedEventArgse){if(e.NewItems!=null){foreach(INotifyPropertyChangeditemine.NewItems){item.PropertyChanged+=newPropertyChangedEventHandler(CollectionItemChanged);}}

c# - 如何让任务不在 UI 线程上执行

以下代码是对实际应用中的一段代码的简化。下面的问题是长时间的工作将在UI线程中运行,而不是在后台线程中运行。voidDo(){Debug.Assert(this.Dispatcher.CheckAccess()==true);Task.Factory.StartNew(ShortUIWork,CancellationToken.None,TaskCreationOptions.None,TaskScheduler.FromCurrentSynchronizationContext());}voidShortUIWork(){Debug.Assert(this.Dispatcher.Ch

c# - 'Event' 的无效值 - 属性 (XAML Eventsetter)

我正在使用VisualStudio2015社区,但收到以下错误消息:Invalidvaluefor'Event'-Property:Microsoft.VisualStudio.DesignTools.Xaml.LanguageService.Semantics.XmlValue.下面是代码:我试过UIElement.MouseEnter、Mouse.MouseEnter、TextBox.MouseEnter。如果我编译处理程序工作正常,但错误消息仍然存在。有什么建议吗? 最佳答案 这似乎是WPF设计器中的一个错误,正如已经报告的那

c# - IoC - 构造函数将运行时值作为一个参数,将服务作为另一个参数

我有一个WPF应用程序,当它启动时,它会在文件系统中查找一些配置文件对于它找到的每个配置文件,它会在不同的窗口中显示一些信息每个窗口都有一个绑定(bind)到窗口数据上下文的关联ViewModel对象因此为每个配置文件创建一个新的ViewModel。表示配置文件中数据的对象被传递到View模型构造函数但是,View模型还有其他依赖项传递给构造函数代码看起来像这样(在从app.xaml启动的Bootstrap中)foreach(WindowConfigconfiginConfigManager.GetConfigs()){IMyServicesvc=newMyService();//ch

c# - 从包含的用户控件为窗口中的某些控件设置样式

我有一个应用程序,其中包含在某些窗口中使用的多个用户控件。这些用户控件之一定义此窗口中的所有其他用户控件是否应允许编辑,因此将所有CheckBox的IsEnabled属性设置为False,ComboBox和Button。然而,TextBoxes应该允许复制它们的文本,因此不应该被禁用,而只是只读的。我尝试遍历LogicalTree,但是一些自建的用户控件没有任何禁用它们的属性,但是这个用户控件中包含的控件只有按钮和文本框。这就是为什么我尝试将样式应用于所有可变元素(CheckBox、ComboBox、Button和TextBox),但是它不会起作用。在用户控件的Ressources部分