Tag: xaml

如何使用XAML在整个容器(如Panel或GroupBox)上设置IsReadOnly / IsEnabled?

我有一个MVVM应用程序,它包含多个视图,其中包含一些基于用户权限,查看/编辑模式和对象状态的复杂IsReadOnly规则。 我想为同一容器中的整个控件组设置IsReadOnly和/或IsEnabled属性( GroupBox / StackPanel / Grid / UserControl /等)。 此属性的值将在ViewModel中定义。 每个UserControl我有3-6个不同的SomeGroupIsReadOnly属性(有大量的输入控件,如TextBox , RadioButtons , ComboBoxes和一些DataGrids ),我正在寻找一个通用的, MVVM友好的解决方案,这将允许我重用基于每个容器的绑定,而不是单独为每个单独的控件指定它们。 如何使用XAML在Panel或GroupBox等容器内的所有控件上设置IsReadOnly / IsEnabled? WPF似乎不支持这种开箱即用的… 编辑 我忘了提到为容器设置IsEnabled会禁用TextBoxes的一个重要function – 能够复制其内容。 我需要它们处于IsReadOnly=true状态。 如果有一个工作方法,那么我的问题将得到解决。

如何将xaml中的datatrigger绑定到代码定义的依赖项属性?

我在窗口后面的代码定义了一个依赖属性,“Active”…… public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } public bool Active { get { return (bool) GetValue(ActiveProperty); } set { SetValue(ActiveProperty, value); } } public static readonly DependencyProperty ActiveProperty = DependencyProperty.Register(“Active”, typeof(bool), typeof(MainWindow), new UIPropertyMetadata(false)); } 然后我使用xaml中的两个复选框绑定到该属性。 我还想根据该属性更改矩形的填充。 我怎样才能做到这一点? 选中一个框会自动检查另一个,但不会更改矩形颜色:(

Windows Phone XAML中的TimeSpan字符串格式

我正在尝试将XAML StringFormat应用于TimeSpan属性。 注意此问题适用于Windows Phone 。 对于WPF,正确的语法是: Text=”{Binding ElapsedTime,StringFormat={}{0:m\\:ss}}” 对于Silverlight,它需要单引号: Text=”{Binding ElapsedTime,StringFormat='{}{0:m\\:ss}’}” 但对于Windows Phone,无论我尝试过什么,输出总是完整的“00:00:00.0000000”。 StringFormat=’m\\:ss’ StringFormat='{}{0:m\\:ss}’ StringFormat=’m\:ss’ StringFormat=m\\:ss 我是否以某种方式错过了正确的排列,或者在Windows Phone中出于某种原因这是不可能的? 更新 我使用了一种解决方法(下面的答案),但是如果有人知道的话,我仍然会想要解释这种奇怪的东西。 (我说“古怪”,因为StringFormat与DateTime属性完美配合,而不是TimeSpan 。) 更新#2 2010年的一个非常相似的问题 。 也许这只是旧版和/或“紧凑版”.Net的问题。 或者这个答案 ( StringFormat=\{0:h\\:mm\} )是否有效?

PresentationFramework.dll中出现未处理的“System.Windows.Markup.XamlParseException”类型exception

我正在使用C#/ WPF中的一个小应用程序,该应用程序由来自串行端口的数据提供。 它还会读取包含一些常量的文本文件以便计算某些内容。 事件处理程序在到达时处理传入的数据: _serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(Receive); 这是Receive处理程序,以及在Dispatcher中创建的委托,以进一步更新UI。 private delegate void UpdateUiTextDelegate(string text); private void Receive(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { // collect characters received to our ‘buffer’ (string) try { // stops long running output timer if enabled if (dispatcherTimer.IsEnabled) { dispatcherTimer.Stop(); } message = _serialPort.ReadLine(); dispatcherTimer.Start(); Dispatcher.Invoke(DispatcherPriority.Send, new UpdateUiTextDelegate(updateUI), message); } catch (Exception […]

Wpf – 接收框架元素属性的属性值更改通知

如何挂钩FrameworkElement属性的属性值更改通知? 我们在运行时加载xaml,对于可视树中的每个元素,我们需要连接一些东西来接收属性值更改通知,当有人更改元素的属性值时。 如果存在,最好的方法是什么?

ContentPresenter布局传递

我试图配置wpf应用程序(以加快ListView显示复杂的多列datatemplated项目)。 我在申请时间表报告中理解数字时遇到问题: 说明说: 这是这个列模板(xaml): 问题: 什么意思是“元素”作为一种时间轴项目? 是布局通过(据我理解)还是其他的东西? 为什么孩子的总和(只有一个孩子= 0.33毫秒)不等于总时间(7.82毫秒)? ContentPresenter在7.5毫秒内做了什么?

BackgroundColor Items ComboBox WPF

我正在做一个WPF,并有一个comboBox,其中包含计算机上可用端口的列表。 我想改变这些物品的颜色。 我的comboBox是这些: 这些是加载它的方法: private void ComboBoxLoaded(object sender, RoutedEventArgs e) { string [] portsList = PrintPorts(); // get the ComboBox reference var comboBox = sender as ComboBox; // assign the ItemsSource to the List comboBox.ItemsSource = portsList; // make the first item selected comboBox.SelectedIndex = 0; } 我尝试了很多东西,但没有任何作用。 有人知道怎么做吗? 谢谢!!

WPF切角元素

我试图在WPF中创建类似于下图的内容。 这个控件被设计成我应用程序中所有内容的基本视图,并且将位于具有背景的Window控件内(可能是某种渐变)。 要求如下: 三面圆角(左上角,左下角和右下角) 切断右侧的标签角,“切割区域”背后的背景是透明的,因此窗口的背景渐变显示(看起来它真的被剪掉了) 标题区域应该是一个内容容器,所以我可以在其中放置任何内容,如图标和文本 内容区域需要具有最小高度,然后在内部内容超过它时增长(不是动态 – 只需支持其中任何元素的高度) 我已经和我斗争了好几个小时,但对于WPF来说,我开始发现自己在圈子里跑来跑去。 我认为WPF的灵活性有很大的好处,但对于刚开始使用它的人来说几乎是太令人生畏了。 任何帮助将非常感激! 谢谢!

如何在XAML中创建类的实例?

我想创建没有可视元素的简单实用程序类,并在XAML中创建它,以便我可以定义数据绑定。 我尝试创建派生自DependencyObject类并在Window.Resources部分创建它,但它不调用任何构造函数。

如何绑定到UWP中的附加属性?

我需要将控件的属性绑定到XAML中的附加属性(以便附加属性成为绑定的源),我无法弄清楚如何做到这一点 – VS2015给了我“ 价值不会下降在预期范围内 “错误,当我运行应用程序时,我得到一个例外。 下面显示的技术在WPF中完美运行。 以下是演示此问题的示例应用程序。 AttachedPropertyTest.cs: namespace App7 { public static class AttachedPropertyTest { public static readonly DependencyProperty FooProperty = DependencyProperty.RegisterAttached( “Foo”, typeof(string), typeof(AttachedPropertyTest), new PropertyMetadata(“Hello world!”)); public static void SetFoo(DependencyObject element, string value) { element.SetValue(FooProperty, value); } public static string GetFoo(DependencyObject element) { return (string) element.GetValue(FooProperty); } } } MainPage.xaml中: 而不是显示“Hello world!” […]