Tag: 依赖项属性

自定义控件中的依赖项属性意外地共享内存/值

我有以下设置: 自定义WPF控件(基类),派生自Canvas 该基类的实现 该实现的ObservableCollection依赖项属性 我有一个测试应用程序,显示我的自定义控件的三个唯一实例(例如 ,Test2,Test3等)。 当我运行并调试应用程序时, ObservableCollection的内容对于控件的所有三个实例都是相同的。 为什么是这样? 图表: [ContentProperty(“DataGroups”)] public abstract class Chart : Canvas { static Chart() { DefaultStyleKeyProperty.OverrideMetadata(typeof(Chart), new FrameworkPropertyMetadata(typeof(Chart))); } public ObservableCollection DataGroups { get { return (ObservableCollection)GetValue(DataGroupsProperty); } set { SetValue(DataGroupsProperty, value); } } public static readonly DependencyProperty DataGroupsProperty = DependencyProperty.Register(“DataGroups”, typeof(ObservableCollection), typeof(Chart), new FrameworkPropertyMetadata(new ObservableCollection(), FrameworkPropertyMetadataOptions.AffectsArrange)); public abstract […]

WPF自定义控件:集合类型的DependencyProperty

我有一个包含ListBox的CustomControl : 我使用Code Behind中的属性绑定ItemsSource : public partial class CustomList : UserControl, INotifyPropertyChanged { public CustomList( ) { InitializeComponent( ); } public ObservableCollection ListSource { get { return (ObservableCollection)GetValue( ListSourceProperty ); } set { base.SetValue(CustomList.ListSourceProperty, value); NotifyPropertyChanged( “ListSource” ); } } public static DependencyProperty ListSourceProperty = DependencyProperty.Register( “ListSource”, typeof( ObservableCollection ), typeof( CustomList ), new PropertyMetadata( […]

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

我已经创建了一个这样的依赖属性: 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 […]