Tag: xaml

WPF中UserControl中DesignWidth和Width之间的差异

当我在WPF中创建一个新的UserControl时,studio会创建一些XAML: 在UserContol我还可以添加Width属性。 DesignWidth和Width什么区别?

WPF:两个DataGrids,相同的ItemsSource,一个IsReadOnly,Bug?

我有一个WPF应用程序,它有两个共享相同ItemsSource的DataGrids。 当我将DataGrid的一个IsReadOnly属性设置为true时,我将无法将记录添加到其他DataGrid。 我仍然可以编辑第二个数据网格的内容,但只是无法添加记录。 这是有意的吗? 有没有办法解决这个问题? 我可以对DataGrid使用IsEnabled =“False”,但我失去了滚动它的能力。 这是设置: XAML: C#: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); List persons = new List(); persons.Add(new Person() { FirstName = “Bob”, LastName = “Johnson” }); persons.Add(new Person() { FirstName = “John”, LastName = “Smith” }); dgA.ItemsSource = persons; dgB.ItemsSource = persons; } class Person […]

事件源vs原始源

我正在阅读C#WPF书籍,在路由事件章节中,事件有2个相同的属性Source和OriginalSource 。 我没有看到它们之间的区别: XAML: 代码背后: private void Ok_Click(object sender, RoutedEventArgs e) { bool flag = false; var source = e.Source; var originalSource = e.OriginalSource; if (source == originalSource) { flag = true; } } 和flag属性在这里是true ,有人可以解释为什么2相同的属性或在这种情况下这个属性没有效果? 或者我们在哪里可以看到这个属性的用例?

摇动画(3D版)

我想在错误上使用这个动画,如下所示: 如何在wpf中实现这一点? 我觉得这应该是多个转换的组合(组合?),但是哪些以及如何确切? 这是一个启动器(mcve或称之为“我的尝试”),这是丑陋的,甚至不是我想要的: 周围有许多2d摇动帖( 点击 , 点击 ),但是我需要动画说“你错了”而不是说“让我跳舞”的动画。

CheckComboBox:如何在单击选择后阻止combobox关闭?

我有一个combobox,它上面有一堆复选框。 我希望用户能够在combobox关闭之前多次单击(或由用户自己关闭)。 现在的问题是,每次单击复选框时,combobox都会关闭,迫使想要选择多个选项的用户多次重新打开它。 我在同一主题上找到了其他问题,但这些问题适用于Silverlight,Qt等比较标签。 我已经尝试过设置StayOpenOnEdit,但这并不能解决问题。 据我所知,没有财产可以解决我的问题。 这让人怀疑我可能会把错误的组件放在一起。 单击复选框后,如何防止combobox自动关闭? 是否有更适合此类任务的组件,如果有,它的名称是什么? 请注意,即使#2的答案是“是”,我仍然对纯粹的学术原因感到好奇。 正如有人在post中建议的那样,我玩过切换按钮和列表框。 然而,这导致了一个总是完全显示的所有复选框的列表,其后面有一些灰色的东西(我假设是切换器)。 也许我在标记中做了一些不那么聪明的事情。 关键是要实现这样的东西,但它需要是一个标准的WPF控件(所有选定项目的连接线很好,但不是必须的)。 此外,我已经阅读了关于绑定和处理尚未完全开发的抱怨,我感到有点怀疑。

IValueConverter的最佳做法是什么?

IValueConverter的最佳做法是什么? 可以将Exception放在Convert方法中,还是应该返回“something”? 这是一个例子: [ValueConversion(typeof(float), typeof(String))] public class PercentConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null || string.IsNullOrEmpty(value.ToString())) return string.Empty; if (value is float) //Edited to support CultureInfo.CurrentCulture, return string.Format(culture, “{0:n}{1}”, ((float)value) * 100, “%”); //** Is it ok to put Exception here or should […]

在WPF中为DataGridRow创建ControlTemplate

我想要完成的是自定义DataGrid控件,以便每行都有圆角,没有网格线(只是我正在使用的设计)。 我一直在尝试做的是创建一个ControlTemplate来修改DataGridRow控件,使它们具有预期的外观。 到目前为止,这是我正在使用的: 这个版本显然是基本的(只是股票模板周围的边框),但是当我运行应用程序时,我看不出任何差异。 那么,问题是如何自定义DataGridRow的控件模板? 或者,如果这是不可行的,是否有更好的方法来实现我的目标:?

从其他Assembly实例化ResourceDictionary xaml

我在包含颜色和画笔的WPF类库中定义了一个Reource Dictionary,名为BrushResources.xaml。 我想在另一个程序集的代码中使用一些Brushes,它引用了这个库项目。 如何获得它的ResourceDictionary实例?

本地化Windows Phone 8“应用程序标题”和“平铺标题”字符串

我有一个简单的Windows Phone 8(WP8)应用程序,我通过修改AppResources.resx本地化来创建西class牙语版本。 问题是“应用程序标题”和WMAppManifest.xml上的“平铺标题”仍然是默认语言(英语)。 我似乎无法通过WMAppManifest.xml或AppResources.resx本地化Application Title和Tile Title。 我发现并试图按照说明操作: http : //msdn.microsoft.com/en-US/library/windowsphone/develop/ff967550(v = vs.105).aspx 我看到的是:1。WP8应用程序列为文件路径’@C:\’。 2. WP8应用程序标题现在显示为’@ AppResLib.dll,-100’。 3. WP8 Tile Title现在显示为’@ AppResLib.dll,-200’。 显然,WMAppManifest.xml中“应用程序标题”和“平铺标题”的值未被解释。 我可以将它们解释为正确的本地化值吗? 是否有另一种方式或WP8的新指南(我已向MS BTW提供了反馈)? 仅供参考,我还查看了此处列出的文章: http : //msdn.microsoft.com/en-US/library/windowsphone/develop/ff637522(v = vs.105).aspx 任何帮助非常感谢!

如何在两个ViewModel之间建立通信/传递数据

我知道这个问题已经被多次询问了,我已经阅读了很多关于它的答案。 然而,它们都没有满足我的要求,因此我需要一些建议。 我正在开发的应用程序看起来像这样: http : //screenshooter.net/100101493/smrkpog 它是基于MVVM Light Toolkit的WPF MVVM应用程序。 带网格的区域是ListBox + Canvas 。 这些项目(让我们称之为“Neumes”)再次由ListBox + Canvas组成,并由用户动态创建。 每个Neume都由’Elements’组成,它们呈现为红色形状。 当用户双击Neume时,将打开一个新窗口。 它应该允许编辑(翻译,resize,旋转)所选Neume的元素。 我想要做的是将存储在MainViewModel中的SelectedNeume(带有一个Elements列表)传递给我新创建的窗口的ViewModel。 我对如何实现这个有一些想法 : 完全跳过新的ViewModel并将MainViewModel设置为新窗口的DataContext , 在新的ViewModel中创建一个’MainViewModel’字段,并在打开一个新窗口时将其传递给那里 使用MVVM Light Toolkit提供的Messaging / Mediator模式。 我正在寻找既简单又整洁的解决方案。 我很乐意使用选项3.但就WPF而言,我是一个相对新手,并且不知道如何真正开始。 此外,我担心当主ListBox上的双击事件被触发时,新窗口打开的事实可能会出现问题,因为我找不到将命令绑定到ListBoxItem的方法。它的Style还是DataTemplate(事件触发器/ EventToCommand解决方案对我不起作用)。 这是事件: private void ListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e) { var item = ((FrameworkElement)e.OriginalSource).DataContext as Neume; if (item != null) { var […]