Tag: wpf

试图了解使用服务打开对话框

我已经阅读了有关使用mvvm模式打开对话框的讨论。 我已经看过几个说使用服务的例子,但我不理解所有部分是如何组合在一起的。 我正在发布这个问题,要求我在阅读内容时提供指导,以便更好地理解我所缺少的内容。 我将发布下面的内容,它确实有效,但是从我在这些post中看到的内容来看,我做得不对,或者说效率不高。 我看到创建对话框界面的位置,然后是使用该界面进行实际工作的类。 然后在ViewModel中一个构造函数传递到这个界面,这是真正让我感到困惑的部分,不知道是什么传递它,没有足够的信息来连接点而不确定我缺少什么。 这是我看过的一篇文章: https : //stackoverflow.com/a/1044304/4593652我有点看到他们的建议,但这对于有人学习的信息来说还不够。 我不是要求任何人为我写这个,只是希望对我应该阅读的内容有所了解,以了解这些部分是如何组合在一起的。 在我的代码中,我有一个这样的类:(这有效,我只是觉得我错过了我在其他post上阅读的内容) public class OpenDialogService { public string GetOpenDialog(string title) { CommonOpenFileDialog dlg = new CommonOpenFileDialog(); dlg.Title = title; dlg.IsFolderPicker = true; dlg.AddToMostRecentlyUsedList = true; dlg.AllowNonFileSystemItems = false; dlg.EnsureFileExists = false; dlg.EnsurePathExists = true; dlg.EnsureReadOnly = false; dlg.EnsureValidNames = true; dlg.Multiselect = false; dlg.ShowPlacesList = […]

如何在sqlite表中插入复杂模型?

首先,如果这个问题看起来不合适,我应该道歉,但我不知道如何处理它。 我实际上有一个Person类,其中有另一个类,即Address,而Address类本身的属性类型是另一个类,即省和城市。 public class Province { public string Name { get; set; } } public class City { public string Name { get; set; } } public class Address { public Province Province { get; set; } public City City { get; set; } public string Street { get; set; } public string PostalCode { […]

MVVM中的Window.Closing事件处理程序

以下问题基于此帖中的评论: MVVM了解问题 我说这是代码隐藏,它不违反视图和视图模型的关注点分离: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Closing += MainWindow_Closing; } void MainWindow_Closing(object sender, CancelEventArgs e) { var canExit = ViewModel.ShowConfirmExitDlg(); if (!canExit) e.Cancel = true; } } 评论是: 代码隐藏中的任何东西都不能进行unit testing,并且调用对话框的创建是逻辑,因此不应该在视图中 我有两个问题: 这是否打破了MVVM与conerns的分离? 你会怎么做(更好) ? 我可以使用一些EventTriggers和CallMethod动作从xaml调用viewmodel方法,但它没有任何区别。 我可以使用事件聚合器: public partial class MainWindow : Window { private readonly IEventAggregator _eventAggregator; […]

WPF / XAML:如何引用未在任何命名空间中定义的类

我正在执行一个尝试定义和打开WPF窗口的roslyn脚本。 除此之外,我的脚本 定义附加行为 定义一个XAML字符串,基于此我创建一个WPF窗口。 在这个XAML代码中,我想使用我的脚本中定义的TextBoxCursorPositionBehavior。 我的脚本(.csx)文件看起来类似于 public class TextBoxCursorPositionBehavior : DependencyObject { // see http://stackoverflow.com/questions/28233878/how-to-bind-to-caretindex-aka-curser-position-of-an-textbox } public class MyGui { public void Show() { string xaml = File.ReadAllText(@”GUI_Definition.xaml”); using (var sr = ToStream(xaml)) { System.Windows.Markup.ParserContext parserContext = new System.Windows.Markup.ParserContext(); parserContext.XmlnsDictionary.Add( “”, “http://schemas.microsoft.com/winfx/2006/xaml/presentation” ); parserContext.XmlnsDictionary.Add( “x”, “http://schemas.microsoft.com/winfx/2006/xaml” ); parserContext.XmlnsDictionary.Add(“i”,”clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity”); // ?? How can i define this […]

如何在Fluent nHibernate中使用ObservableCollection?

ObservableCollection Items 但现在在Fluent nHibernate我不知道如何使用它。 是否有一种简单的方法可以使用Fluent nHibernate的ObservableCollection? 我注意到有一个DLL NHibernate.Collection.Observable; 但我不知道如何替换使用IList的当前代码: public virtual IList Items { get { return _Items; } set { _Items = value; OnPropertyChanged(System.Reflection.MethodBase.GetCurrentMethod().Name.Substring(4)); /*OnPropertyChanged(“Items”);*/ } } private IList _Items; 如何更改上面的代码使其与Observable Collection和Fluent nHibernate一起使用?

将行为附加到MetroWindow失败并导致错误的样式

我有一个简单的测试应用程序,它显示了一个带有附加行为的简单Mahapps MetroWindow。 问题是在附加行为时,绘制了Mahapps MetroWindow的外边框。 删除行为时,所有内容都按预期显示: ……但行为本身没有做任何事情。 这是SomeBehaviour类的代码: public sealed class SomeBehavior : Behavior { public static readonly DependencyProperty SomeKeyProperty = DependencyProperty.Register( “SomeKey”, typeof(Key), typeof(SomeBehavior), new PropertyMetadata(default(Key))); public Key SomeKey { get { return (Key)this.GetValue(SomeKeyProperty); } set { this.SetValue(SomeKeyProperty, value); } } protected override void OnAttached() { base.OnAttached(); } protected override void OnDetaching() { base.OnDetaching(); } […]

抑制GridViewColumn上的鼠标hover效果

我有一个带有HeaderTemplate的GridViewColumn ,它有一个Image和一个TextBlock 。 当用户将鼠标hover在Image我正在更改其不透明度,但我仍然会获得默认的标题鼠标效果。 当用户将鼠标hover在图像上时,如何抑制此效果?

WPF如何将自引用数据集绑定到树视图

我是WPF的初学者。 我想将包含节点和关系的以下DataSet绑定到TreeView 。 数据集是: internal static DataSet getData() { DataTable dt = new DataTable(“data”); dt.Columns.Add(“Id”, typeof(int)); dt.Columns.Add(“ParentId”, typeof(int)); dt.Columns.Add(“NodeDescription”); dt.Rows.Add(1, null, “Employees”); dt.Rows.Add(2, null, “Cars”); dt.Rows.Add(3, 1, “Men”); dt.Rows.Add(4, 1, “Women”); dt.Rows.Add(5, 2, “BMW”); dt.Rows.Add(6, 2, “Lexus”); dt.Rows.Add(7, 3, “Adam Kowalski”); dt.Rows.Add(8, 3, “Dawid Nowacki”); dt.Rows.Add(9, 4, “Ilona Wacek”); DataSet ds = new DataSet(); ds.Tables.Add(dt); […]

WPF和3D如何更改3D空间中的单个位置点?

我在WPF中定义了一个非常简单的3D空间,它定义了一个3D矩形,我希望能够操作MeshGeometry3D上的每个Point3D对象(在“Positions”中)属性,但我遇到了麻烦。 .. 这是我的XAML: 其中test1只是一个包裹在可视刷中的图像。 这是我的c#: private void canvas_ContactDown(object sender, ContactEventArgs e) { //Point contactPosition = e.GetPosition(this); //var rayMeshResult = (RayMeshGeometry3DHitTestResult)VisualTreeHelper.HitTest(ViewPort, e.GetPosition(ViewPort)); translatedX -= 0.25; translatedY -= 0.25; model1.Transform = new TranslateTransform3D(translatedX, translatedY, 0.0); //model1.Transform.Transform(new Point3D(translatedX, translatedY, 0.0)); Console.WriteLine(“Changed”); //Apply Z index changes here… var geometry3D = model1.Geometry as MeshGeometry3D; Point3DCollection positions = geometry3D.Positions; foreach (var […]

从另一个线程读取Checkbox状态

我试图从WPF中的BackgroundWorker中读取复选框的值: 这不起作用: bool? isSleepChecked = checkBoxSleep.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate{ return checkBoxSleep.IsChecked;}); 无法将匿名方法转换为委托类型’System.Threading.ThreadStart’,因为块中的某些返回类型不能隐式转换为委托返回类型 编辑 – 这是HB的答案,使用委托而不是lambda表达,我发现它更具可读性 bool? isSleepChecked = (bool?)checkBoxSleep.Dispatcher.Invoke(new Func(delegate { return checkBoxSleep.IsChecked; }));