C# 无法数据绑定滑块WPF的值

C# 无法数据绑定滑块WPF的值,c#,wpf,C#,Wpf,我正在努力使用MVVM将滑块的值绑定到模型中的值。返回错误“双向或单向ToSource绑定无法在类型为“SliderTest.ViewModel.”的只读属性“Gravity”上工作”,尽管该属性在返回模型的过程中一直是公共的 我已经在一个简单的测试环境中复制了这个问题 MainWindow.xaml <Window x:Class="SliderTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/

我正在努力使用MVVM将滑块的值绑定到模型中的值。返回错误“双向或单向ToSource绑定无法在类型为“SliderTest.ViewModel.”的只读属性“Gravity”上工作”,尽管该属性在返回模型的过程中一直是公共的

我已经在一个简单的测试环境中复制了这个问题

MainWindow.xaml

<Window x:Class="SliderTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:SliderTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Slider x:Name="GravitySlider" Height="25" Panel.ZIndex="-1" SmallChange="0" IsSnapToTickEnabled="True" Value="{Binding Gravity, Mode=TwoWay}" />
    </Grid>
</Window>
Model.cs

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SliderTest
{
    public class Model
    {

        public Model()
        {
            Item.Gravity = 1;
        }

        public double Gravity
        {
            set
            {
                Item.Gravity = value;
                GravityUpdated(this, new EventArgs());
            }
            get
            {
                return Item.Gravity;
            }
        }

        public event EventHandler GravityUpdated;
    }
}
项目1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SliderTest
{
    class Item
    {
        private static double gravity;

        public static double Gravity { get => gravity; set => gravity = value; }
    }
}

您正在绑定到
ViewModel
中的属性
Gravity
,该属性是只读属性

您应该更改此代码:

public double Gravity=>model.Gravity;

对于这一点:

public double Gravity
{
    set
    {
        model.Gravity = value;
        GravityUpdated(this, new EventArgs());
    }
    get
    {
        return model.Gravity;
    }
}

请注意,错误消息并没有抱怨属性(在视图模型中)是非公共的,而是抱怨它是只读的。感谢您的回答。我认为“=>”操作符可以有效地将视图模型中的属性映射到模型中的属性,这是双向的。我是否缺少lambda操作符在这里工作的一个方面?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SliderTest
{
    class Item
    {
        private static double gravity;

        public static double Gravity { get => gravity; set => gravity = value; }
    }
}
public double Gravity
{
    set
    {
        model.Gravity = value;
        GravityUpdated(this, new EventArgs());
    }
    get
    {
        return model.Gravity;
    }
}