依赖属性未设置

伊夫97

我创建了一个名为Period的类,该类放置在名为Timetable的UserControl中我已经为Period创建了一个名为ContainingTimetable的依赖项属性,以便Period可以访问其包含时间表的属性。

这是依赖项属性:

Public Shared ReadOnly ContainingTimetableProperty As DependencyProperty = DependencyProperty.Register(
    "ContainingTimetable", GetType(Timetable), GetType(Period), new PropertyMetadata(Nothing))

Public Property ContainingTimetable As Timetable
    Get
        Return DirectCast(GetValue(ContainingTimetableProperty), Timetable)
    End Get
    Set
        SetValue(ContainingTimetableProperty, Value)
        Debug.WriteLine("Timetable has been set")
    End Set
End Property

这是XAML中的控件:

<local:Timetable Margin="50,25,21,68" UseLayoutRounding="True" PixelToMinuteRatio="2" StartTime="9:00" x:Name="Timetable1">

     <local:Period Background="#72000000" VerticalAlignment="Top" Day="Sunday" StartTime="9:00"
                      EndTime="10:20" Margin="0,0,1,0" ContainingTimetable="{Binding ElementName=Timetable1}"/>

</local:Timetable>

如您所见,我已将Period的ContainingTimetable属性绑定到Timetable1但是,当我运行程序时,ContainingTimetable属性从未在该时间段上设置。我也收到此错误:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=Timetable1'. BindingExpression:(no path); DataItem=null; target element is 'Period' (Name=''); target property is 'ContainingTimetable' (type 'Timetable')

任何帮助将不胜感激,谢谢。

伊夫97

您可以使用Period.Parent来获取容器。但是,由于时间表是UserControl,因此只会返回immidete容器,而不是UserControl的实例。因此,如果UserControl在另一个Period.Parent内部由两个网格组成,则父级将返回一个网格而不是时间表。

要解决此问题,您可以检查父母是否是时间表,如果不是时间表,则再次检查。循环遍历,直到其类型正确为止。

这是代码:

    Dim TimetableObject As DependencyObject
    TimetableObject = Me.Parent

    Do While (Not TimetableObject.GetType() = GetType(WPFTimetableCreator.Timetable))
        TimetableObject = VisualTreeHelper.GetParent(TimetableObject)
    Loop

就我而言,我将该属性更改为只读,并通过此方法在内部进行了设置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

属性未设置

来自分类Dev

f:setPropertyActionListener未设置属性

来自分类Dev

jQuery .css未设置属性

来自分类Dev

全部覆盖CSS属性:未设置

来自分类Dev

在if语句中未设置Qt动态属性

来自分类Dev

在准备方法中未设置属性

来自分类Dev

未设置必需的Derby DataSource属性databaseName

来自分类Dev

未设置Intellij multiModuleProjectDirectory系统属性

来自分类Dev

未设置iOS中的NSData属性

来自分类Dev

在if语句中未设置Qt动态属性

来自分类Dev

依赖属性将不会设置

来自分类Dev

C#属性获取设置未设置值

来自分类Dev

错误属性变量或返回属性时未设置块变量

来自分类Dev

使用属性映射未设置属性的新的Domain对象

来自分类Dev

导航属性,对象未设置为对象的实例

来自分类Dev

STEP(ISO 10303-21)未设置属性

来自分类Dev

蚂蚁构建失败-未设置libs.CopyLibs.classpath属性

来自分类Dev

whenReady在任务运行前未设置gradle属性

来自分类Dev

查找未设置属性的Neo4j节点

来自分类Dev

在Azure Web App中未设置SameSite None cookie属性

来自分类Dev

尽管未设置边距属性,但水平空白空间

来自分类Dev

Mapbox的样式过滤器:未设置属性

来自分类Dev

WPF棱镜通知属性更改未设置验证

来自分类Dev

即使未设置绑定属性,DatePicker也会选择选择

来自分类Dev

未设置对象属性,但控制台说不

来自分类Dev

选择的AngularJS ng-model未设置selected =“ selected”属性

来自分类Dev

whenReady在任务运行前未设置gradle属性

来自分类Dev

核心数据检查是否从未设置过属性

来自分类Dev

Spring Boot-如果未设置属性,则检测并终止?