Tag: 依赖项属性

如何在依赖属性中获取/设置什么都不做?

我已经创建了一个这样的依赖属性: public partial class MyControl: UserControl { //… public static DependencyProperty XyzProperty = DependencyProperty.Register(“Xyz”,typeof (string),typeof (MyControl),new PropertyMetadata(default(string))); public string Xyz { get { return (string) GetValue(XyzProperty ); } set { SetValue(XyzProperty , value); } } //… } 然后将它绑定到我的wpf窗口,一切正常。 当我尝试向setter添加一些逻辑时,我注意到它没有被调用。 我修改了get;现在设置为一个点,它们看起来像这样: get{return null;} set{} 它仍然有效! 怎么会? GetValue / SetValue调用的用途是什么?

DataGridTemplateColumn的自定义控件

我目前正在尝试从DataGridTemplateColumn创建一个自定义控件,该DataGridTemplateColumn将在我们的许多应用程序中重用。 我遇到了一些问题,在自定义控件上获取依赖属性以进行绑定并正确引发属性更改通知。 我目前有从DataGridTemplateColumninheritance的DataGridTemplateColumn ,xaml看起来像这样: 而背后的代码看起来像这样 public partial class DataGridDateColumn : DataGridTemplateColumn { public static readonly DependencyProperty SelectedDateProperty = DependencyProperty.Register(“SelectedDate”, typeof(DateTime?), typeof(DataGridDateColumn), new FrameworkPropertyMetadata(null, OnSelectedDateChanged)); private static void OnSelectedDateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { DataGridDateColumn col = (DataGridDateColumn)d; col.SelectedDate = (DateTime?)e.NewValue; } public DateTime? SelectedDate { get { return (DateTime?)GetValue(SelectedDateProperty); } set { SetValue(SelectedDateProperty, value); } } […]

绑定到UserControl DependencyProperty

我创建了一个带有一些DependencyProperties的UserControl(在这个例子中只有一个字符串属性)。 当我实例化Usercontrol时,我可以设置UserControl的属性,并按预期显示。 当我尝试通过Binding替换静态文本时,不显示任何内容。 我的UserControl如下所示: 守则背后是: namespace TestUserControBinding { public partial class MyUserControl : UserControl { public MyUserControl() { InitializeComponent(); this.DataContext = this; } public static readonly DependencyProperty MyTextProperty = DependencyProperty.Register( “MyText”, typeof(string), typeof(MyUserControl)); public string MyText { get { return (string)GetValue(MyTextProperty); } set { SetValue(MyTextProperty, value); } }// MyText } } 当我在MainWindow中尝试这个时,一切都如预期: 但这不起作用: 标签的行为是正确的,因此属性“文本”没有问题 我的错是什么? […]

通用命令处理程序的简单注入器用法

接口,命令和命令处理程序按照Simpleinjector wiki中的说明进行设置。 public interface ICommand { string Name { get; set; } } public class Command1 : ICommand { public string Name { get; set; } } public class Command2 : ICommand { public string Name { get; set; } } public interface ICommandHandler { void Execute(TCommand Command); } public class Command1Handler : ICommandHandler { […]

如何简单地将其绑定到ConverterParameter?

我有问题,我不知道如何解决这个简单,我有很多这样的点,那么解决方案应该不复杂。 我有主要项目设置和主要XAML。 我有Binding Converter和XAML文件的依赖项目看起来像: 此XAML文件由主项目的主XAML文件加载。 我必须将一个属性的值从Setting的传递给ConverterParameter ,这个参数可以在运行时更改,然后这必须是Binding , Binding我只能在这种情况下为DependencyProperty做。 我必须为此Setting属性执行DependencyProperty包装才能解决此问题? 当我尝试在ConverterParameter设置Binding ,我将在运行时获得此exception: 无法在“绑定”类型的“ConverterParameter”属性上设置“绑定”。 ‘绑定’只能在DependencyObject的DependencyProperty上设置。

需要一个简短明确的“依赖属性”定义

我正在试图找出究竟是什么依赖属性,但当我在任何地方查找定义时,我只找到“如何使用”而不是“它是什么”。 想象一下,在面试时会被问到 – 什么是依赖属性。 你的答案是什么?

绑定到工具提示的wpf自定义控件依赖项属性?

我有一个我在WPF中编写的自定义控件,它有一个布尔依赖属性: public static readonly DependencyProperty IsAlertProperty = DependencyProperty.Register(“IsAlert”, typeof(bool), typeof(AlertControl), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.None, OnIsAlertChanged, null, false, UpdateSourceTrigger.PropertyChanged)); public bool IsAlert { get { return (bool)GetValue(IsAlertProperty); } set { SetValue(IsAlertProperty, value); } } 在我的Generic.xaml中,我有以下xaml代码: … 问题是这似乎不起作用。 我使用Snoop监视我的xaml,并且IsAlert属性正在适当地改变,但是如果我深入研究我的AlertControl.ToolTip ,我看到Visiblity DependencyProperty有一个绑定错误。 我也尝试使用RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:AlertControl}} ,但这也给出了绑定问题。 我不知道如何诊断这个,因为我的输出窗口也没有吐出任何绑定表达式错误。

将属性注册为DependencyProperty

我有一个名为ChartView的UserControl。 我有一个ObservableCollection类型的属性。 我在ChartView中实现了INotifyPropertyChanged。 ChartEntry的代码是: public class ChartEntry { public string Description { get; set; } public DateTime Date { get; set; } public double Amount { get; set; } } 现在我想在另一个View中使用此Control,并通过DataBinding为ChartEntries设置ObservableCollection。 如果我试着这样做: 我在xaml窗口中收到一条消息,我无法绑定到非依赖项属性或非依赖项对象。 我试图将ObservableCollection注册为DependencyProperty,但没有成功。 我尝试使用WPF教程中的代码 我的Attached-Property代码是 public static class ChartEntriesSource { public static readonly DependencyProperty ChartEntriesSourceProperty = DependencyProperty.Register(“ChartEntriesSource”, typeof(ChartEntry), typeof(ChartView), new FrameworkPropertyMetadata(OnChartEntriesChanged)); private static void […]

何时使用依赖项属性

我有时认为我可能不必要地使用依赖属性。 我什么时候需要使用它? 当我有一个依赖于其他属性的属性? 假设我有一个Color属性,我希望它依赖于属性Hue,Saturation,Luminosity我是否使用依赖属性? 或者我用什么? 当属性Hue,Saturation,Luminosity改变时,我控制绑定到Color以更新。 现在我做的是 public byte Hue { get { return _hue; } set { if (_hue == value) return; _hue = value; NotifyPropertyChanged(“Hue”); NotifyPropertyChanged(“Color”); // to update controls bound to color } } 但我认为这不是正确的做事方式? 如果我有更多影响颜色的属性,我将在所有这些属性中增加1行?

如何将逻辑添加到现有依赖项属性回调?

我正在尝试将一个PropertyChangedCallback添加到UIElement.RenderTransformOriginProperty。 当我尝试覆盖PropertyMetadata时抛出exception。 我搜索过MSDN和谷歌,我能想到的就是这个 。 在该post的某些时候建议使用DependencyPropertyDescriptor.AddValueChanged,但这不会解决我的问题,因为这不是每个实例的回调。 我不明白这个例外意味着什么。 有谁知道我做错了什么? public class foo : FrameworkElement { private static void Origin_Changed( DependencyObject d, DependencyPropertyChangedEventArgs e) { } static foo() { PropertyMetadata OriginalMetaData = UIElement.RenderTransformOriginProperty.GetMetadata( typeof(FrameworkElement)); /*An exception is thrown when this line is executed: “Cannot change property metadata after it has been associated with a property”*/ OriginalMetaData.PropertyChangedCallback += new […]