BindingExpression路径错误- 'Color'属性'MyObjectsVM'

本文关键字:Color MyObjectsVM 属性 路径 BindingExpression 错误 | 更新日期: 2023-09-27 18:02:58

我已经检查了StackOverflow寻找答案,并且问这里是我最后的手段,所以请不要投票。我需要一个比我更有经验的人的意见:下面是我想要绑定的内容:

<Grid x:Name="all" Grid.Row="1">
    <TextBlock Text="all"  Foreground="{Binding Color}" x:Name="allTxt" Grid.Row="0" Padding="10,21,0,0" FontWeight="Light" FontSize="{StaticResource PhoneFontSizeExtraLarge}" Tap="TextBlock_Tap_1"  />
</Grid>

这就是我如何设置Grid组件的DataContext

public Multiplication()
{
    InitializeComponent();
    this.all.DataContext = App.MyObjectsViewModel.allObjectsVisible;
}

下面是MyObjectsViewModel

的构造函数
public MyObjectsViewModel(DataContextManager manager)
{
    allObjectsVisible = new allVisibleBtn() { Allvisible = true, Color = "white" };
}

allObjectsVisible属性:

 private allVisibleBtn _allObjectsVisible;
 public allVisibleBtn allObjectsVisible
 {
    get { return _allObjectsVisible;}
    set { _allObjectsVisible= value; NotifyPropertyChanged("allObjectsVisible"); }
 }

最后这是allObjectsBtn的类:

public class allVisibleBtn : BaseViewModel
    {
        private bool _Allvisible;
        public bool Allvisible
        {   get { return _Allvisible; }
            set { NotifyPropertyChanging("Allvisible"); _Allvisible = value; NotifyPropertyChanged("Allvisible"); }
        }
        private string _Color;
        public string Color
        {
            get { return _Color; }
            set { if (value != null) { NotifyPropertyChanging("Color"); _Color = value; } NotifyPropertyChanged("Color"); }
        }
    }

预期的行为是改变文本块前景的时刻有人点击它。OFC有一些更多的事情是在水龙头后完成的,但从问题的角度来看没有什么重要的。所以请帮助我,为什么我得到以下错误:

`System.Windows.Data Error: BindingExpression path error: 'Color' property not found on 'Project.MyObjectsViewModel' 'Project.MyObjectsViewModel' (HashCode=50930930). BindingExpression: Path='Color' DataItem='Project.MyObjectsViewModel' (HashCode=50930930); target element is 'System.Windows.Controls.TextBlock' (Name='allTxt'); target property is 'Foreground' (type 'System.Windows.Media.Brush')..`

BindingExpression路径错误- 'Color'属性'MyObjectsVM'

TextBlock的DataContext似乎是Project.MyObjectsViewModel的一个实例,并且该类型没有Color属性。所以你需要将你的TextBlock的DataContext设置为allVisibleBtn的一个实例。试着

<TextBlock DataContext="{Binding Path=allObjectsVisible}" ... />

一旦你得到工作,你需要改变allVisibleBtn上的颜色属性的类型。TextBlock的前景属性需要一个Brush,而不是一个字符串。