Xaml 产生路径错误,但有些仍然有效

本文关键字:有效 生路 路径 错误 Xaml | 更新日期: 2023-09-27 18:37:26

我遇到绑定路径错误的情况。但是,某些绑定仍然有效,而其他绑定则不起作用。我有以下类(仅复制/粘贴相关位):

代码隐藏:

class RSSManager : BaseViewModel
{
    #region Resources
    private Platforms _platformsList;
    public Platforms PlatformsList
    {
        get { return _platformsList; }
        set
        {
            _platformsList = value;
            NotifyPropertyChanged("PlatformsList");
        }
    }
    private List<IActivity> _mainActivitiesList = new List<IActivity>();
    public List<IActivity> MainActivitiesList
    {
        get { return _mainActivitiesList; }
        set
        {
            _mainActivitiesList = value;
            NotifyPropertyChanged("MainActivitiesList");
        }
    }
    private ObservableCollection<IActivity> _activitiesList = new ObservableCollection<IActivity>();
    public ObservableCollection<IActivity> ActivitiesList
    {
        get { return _activitiesList; }
        set
        {
            _activitiesList = value;
            NotifyPropertyChanged("ActivitiesList");
        }
    }
    private ObservableCollection<IActivity> _alertsList = new ObservableCollection<IActivity>();
    public ObservableCollection<IActivity> AlertsList
    {
        get { return _alertsList; }
        set
        {
            _alertsList = value;
            NotifyPropertyChanged("AlertsList");
        }
    }
    private ObservableCollection<IActivity> _invasionsList = new ObservableCollection<IActivity>();
    public ObservableCollection<IActivity> InvasionsList
    {
        get { return _invasionsList; }
        set
        {
            _invasionsList = value;
            NotifyPropertyChanged("InvasionsList");
        }
    }
    private ObservableCollection<IActivity> _outbreaksList = new ObservableCollection<IActivity>();
    public ObservableCollection<IActivity> OutbreaksList
    {
        get { return _outbreaksList; }
        set
        {
            _outbreaksList = value;
            NotifyPropertyChanged("OutbreaksList");
        }
    }
    private ObservableCollection<IActivity> _doneList = new ObservableCollection<IActivity>();
    public ObservableCollection<IActivity> DoneList
    {
        get { return _doneList; }
        set
        {
            _doneList = value;
            NotifyPropertyChanged("DoneList");
        }
    }
    #endregion

}

    public partial class Activities : Page, IOptions
{
    Options.OptionsActivities _options = new Options.OptionsActivities();
    RSSManager _manager = new RSSManager();
    public Activities()
    {
        InitVars();
        InitializeComponent();
        DataContext = _manager;
        UpdateCheckBoxes();
        UpdateTabsHeaders();
    }

}

活动.xaml :

<Page x:Class="Warframe_Activity_Manager.Views.Activities"
  DataContext="{Binding Source={RelativeSource Self}}"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  mc:Ignorable="d" 
  d:DesignHeight="718" d:DesignWidth="1024"
  GotFocus="Page_GotFocus"
Title="Activities">
<Grid Name="MainGrid" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="30" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <StackPanel Name="PlatformChoices" Orientation="Horizontal" Background="Transparent">
        <Label Name="ChoicePCLabel" Content="Show PC Activities" Foreground="Aqua" VerticalAlignment="Center"></Label>
        <CheckBox Name="ChoicePC" VerticalAlignment="Center" Click="Platform_Click"/>
        <Label Name="ChoicePS4Label" Content="Show PlayStation 4 Activities" Foreground="Aqua" VerticalAlignment="Center"></Label>
        <CheckBox Name="ChoicePS4" VerticalAlignment="Center" Click="Platform_Click"/>
        <Label Name="ChoiceXB1Label" Content="Show XBox One Activities" Foreground="Aqua" VerticalAlignment="Center"></Label>
        <CheckBox Name="ChoiceXB1" VerticalAlignment="Center" Click="Platform_Click"/>
    </StackPanel>
    <Button Name="Refresh" HorizontalAlignment="Right" Content="Refresh" Click="Refresh_Click"/>
    <TabControl Name="Tabs" Grid.Row="1" Background="Transparent">
        <TabItem Name="TabAll" Header="All Activities" BorderThickness="0">
            <ListView Name="ListAll" Background="Transparent" ItemsSource="{Binding ActivitiesList}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="1*"/>
                                <ColumnDefinition Width="1*"/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="1*"/>
                                <RowDefinition Height="1*"/>
                            </Grid.RowDefinitions>
                            <StackPanel Name="ActivityTypeContainer" Orientation="Horizontal" HorizontalAlignment="Left">
                                <Label Name="ActivityTypeLabel" VerticalAlignment="Center" Foreground="Red" Content="Activity Type :"/>
                                <Label Name="ActivityType" VerticalAlignment="Center" Foreground="Red" Content="{Binding Path=Type}"/>
                            </StackPanel>
                            <StackPanel Name="ActivityPlatformContainer" Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0, 0, 10, 0">
                                <Label Name="ActivityPlatformLabel"  VerticalAlignment="Center" Foreground="Blue" Content="Platform :"/>
                                <Label  Name="ActivityPlatform" VerticalAlignment="Center" Foreground="Blue" Content="{Binding Path=Platform}"/>
                            </StackPanel>
                            <StackPanel Name="ActivityInfoContainer" Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Left">
                                <Label Name="ActivityInfoLabel" VerticalAlignment="Center" Foreground="Orange" Content="Activity Information : "/>
                                <Label Name="ActivityInfo" VerticalAlignment="Center" Foreground="Orange" Content="{Binding Path=Info}"/>
                            </StackPanel>
                            <StackPanel Name="ActivityDoneContainer" Grid.Column="1" Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right"  Margin="0, 0, 10, 0">
                                <Label Name="ActivityDoneLabel" VerticalAlignment="Center" Foreground="Green" Content="Finished : "/>
                                <CheckBox Name="ActivityDone" VerticalAlignment="Center" IsChecked="{Binding Path=Done, Mode=TwoWay}" Click="ActvityDone_Click"/>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </TabItem>
    </TabControl>
</Grid>

错误 :

System.Windows.Data 错误: 40 : 绑定表达式路径错误: 在"对象"相对源"(哈希代码=16143157)"上找不到"活动列表"属性。绑定表达式:路径=活动列表;DataItem='RelativeSource' (HashCode=16143157);目标元素是"列表视图"(名称="列表全部");目标属性是"ItemsSource"(类型"IEnumerable") System.Windows.Data 错误: 40 : 绑定表达式路径错误: 在"对象"相对源"(哈希代码=16143157)"上找不到"警报列表"属性。绑定表达式:路径=警报列表;DataItem='RelativeSource' (HashCode=16143157);目标元素是"列表视图"(名称="列表警报");目标属性是"ItemsSource"(类型"IEnumerable") System.Windows.Data 错误: 40 : 绑定表达式路径错误: 在"对象"相对源"(哈希代码=16143157)"上找不到"入侵列表"属性。绑定表达式:路径=入侵列表;DataItem='RelativeSource' (HashCode=16143157);目标元素是"列表视图"(名称="列表入侵");目标属性是"ItemsSource"(类型"IEnumerable") System.Windows.Data 错误: 40 : 绑定表达式路径错误: 在"对象"相对源"(哈希代码=16143157)"上找不到"爆发列表"属性。绑定表达式:路径=爆发列表;DataItem='RelativeSource' (HashCode=16143157);目标元素是"列表视图"(名称="列表爆发");目标属性是"ItemsSource"(类型"IEnumerable") System.Windows.Data 错误: 40 : 绑定表达式路径错误: 在"对象"相对源"(哈希代码=16143157)"上找不到"完成列表"属性。绑定表达式:路径=完成列表;DataItem='RelativeSource' (HashCode=16143157);目标元素是"列表视图"(名称="列表完成");目标属性是"ItemsSource"(类型"IEnumerable")

我还没有进入保理模板的部分,但我认为这不是这里的问题。

如前所述,即使我收到错误,程序也会显示我想要的内容。但是,我接下来添加的绑定根本不起作用,输出给出相同的错误类型(错误的路径)。我在这里做错了什么?

Xaml 产生路径错误,但有些仍然有效

您正在 XAML 和构造函数中设置 DataContext。

删除 XAML 中的数据上下文行,因为这会导致输出中的错误:

DataContext="{Binding Source={RelativeSource Self}}"

如果绑定失败,应用程序不会引发任何错误并停止应用程序,但它们会在输出中显示这些错误。

我发现在运行应用程序之前查看任何绑定错误的好方法是检查智能感知是否正常工作。如果是,那么你应该很高兴。