Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Caliburn.Micro/WPF:绑定和访问基类数据_C#_Wpf_Xaml_Caliburn.micro - Fatal编程技术网

C# Caliburn.Micro/WPF:绑定和访问基类数据

C# Caliburn.Micro/WPF:绑定和访问基类数据,c#,wpf,xaml,caliburn.micro,C#,Wpf,Xaml,Caliburn.micro,因此,我使用ItemsControl来迭代一些通知对象的可绑定集合,这些对象本质上只是记录。它们及其相关类都是从我的类NotificationBase派生的。似乎我能够将集合绑定到items控件(尽管我无法使用Caliburn进行绑定,因为我还没有为它编写转换器) 但由于路径未找到错误,我不断得到null和空白点:BindingExpression路径错误:“object”“DebugNotification”“上未找到base”属性,因为它是从基类继承的,因此未显式定义 这是集装箱的报关单 &

因此,我使用ItemsControl来迭代一些通知对象的可绑定集合,这些对象本质上只是记录。它们及其相关类都是从我的类NotificationBase派生的。似乎我能够将集合绑定到items控件(尽管我无法使用Caliburn进行绑定,因为我还没有为它编写转换器) 但由于路径未找到错误,我不断得到null和空白点:
BindingExpression路径错误:“object”“DebugNotification”“上未找到base”属性
,因为它是从基类继承的,因此未显式定义

这是集装箱的报关单

<StackPanel Name="NotificationsList" Grid.Row="1" ScrollViewer.CanContentScroll="True">
        <ItemsControl ItemsSource="Notifications">

在每一次迭代中,模板都会有这样一个文本块

<TextBlock Name="Title" HorizontalAlignment="Stretch" VerticalAlignment="Top" Text="{Binding base.title}">
                                </TextBlock>

是否有任何方法可以从xaml访问祖先数据,或者必须为每个派生类显式定义这些getter?也许Caliburn?Micro有更好的解决方案

如果有人需要更多的上下文,以下是我因笨重而省略的面板的全部代码:

    <StackPanel Name="NotificationsList" Grid.Row="1" ScrollViewer.CanContentScroll="True">
        <ItemsControl ItemsSource="Notifications">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Label Name="NotificationMessageTemplate" Style ="{DynamicResource NotificationEntry}">
                        <Grid HorizontalAlignment="Stretch" Width="{Binding ElementName=NotificationMessageTemplate, Path=ActualWidth}" Height="{Binding ElementName=NotificationMessageTemplate, Path=ActualHeight}">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="*"></RowDefinition>
                                <RowDefinition Height="*"></RowDefinition>
                                <RowDefinition Height="*"></RowDefinition>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="2*"/>
                                <ColumnDefinition/>
                            </Grid.ColumnDefinitions>
                            <Label Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="1" VerticalAlignment="Stretch">
                                <TextBlock Name="Title" HorizontalAlignment="Stretch" VerticalAlignment="Top" Text="{Binding base.title}">
                                </TextBlock>
                            </Label>
                            <Label Grid.Row="1" Grid.Column="0" Grid.RowSpan="2" Grid.ColumnSpan="2" VerticalAlignment="Stretch">
                                <TextBlock Name="Message" HorizontalAlignment="Stretch" VerticalAlignment="Top" Text="{Binding base.message}">
                                </TextBlock>
                            </Label>
                        </Grid>
                    </Label>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </StackPanel>


对于其中一个,您可能脱离了绑定到类对象中的属性或基属性的名称的约定。我建议删除不需要命名的文本块中的名称,因为您正在进行绑定,请选择要进行绑定的文本块,或者选择不同时进行绑定和约定的文本块。第二,通知中是否有名为Message的属性?还是头衔?我假设有,并且它可能是继承的?基本上,错误是在您的通知集合中找不到名为“base”的属性。此外,ItemsSource的绑定也有点关闭。啊好的。我会试试看,并告诉你最新情况。但是,是的,通知具有消息和标题属性。看起来我忘了按以前的方式编辑它,它只是
Binding Path=title
base.title
就在那里,让我试验一下在哪里可以工作。但是,问题是基类中的方法是隐藏的,需要显式地为它们定义getter,以便XAML查看标题和消息,而不是隐式地作为继承的一部分存在。