Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# wpf mvvm绑定到子viewmodel.property_C#_Wpf_Xaml_Mvvm_Binding - Fatal编程技术网

C# wpf mvvm绑定到子viewmodel.property

C# wpf mvvm绑定到子viewmodel.property,c#,wpf,xaml,mvvm,binding,C#,Wpf,Xaml,Mvvm,Binding,我举了一个尽可能简单的例子。 我有一个类ViewModelMain,它将实现几个viewmodels。 我试图在ViewModelMain中的viewmodel上绑定滑块值。 这是我的代码: MainWindow.xaml.cs 我在这里设置了datacontext,不知道这是否真的是个好主意 public partial class MainWindow : Window { public MainWindow() { InitializeComponent()

我举了一个尽可能简单的例子。
我有一个类ViewModelMain,它将实现几个viewmodels。
我试图在ViewModelMain中的viewmodel上绑定滑块值。 这是我的代码:

MainWindow.xaml.cs
我在这里设置了datacontext,不知道这是否真的是个好主意

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        VMMain vm = new VMMain();
        this.DataContext = vm;
    }
}
MainWindow.xaml

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Slider Height="23"  Name="page_slider"  Width="100" Value="{Binding Path=p.NbrLine}"  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Minimum="0" Maximum="10"/>
    <TextBox Text="{Binding Value, ElementName=page_slider, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Height="28" HorizontalAlignment="Stretch"  Name="Voiture1Label" VerticalAlignment="Stretch" Margin="0,110,0,172"></TextBox>
</Grid></Window>

当我启动它时,我的滑块仍然在0上,我不明白为什么它不在5上。

p
是一个字段,而不是属性。您应仅绑定到以下属性:

public MyPage p { get; set; }

p
是一个字段,而不是属性。您应仅绑定到以下属性:

public MyPage p { get; set; }

实际上你可以把p变换成这样的性质。WPF不能绑定到简单属性

public class ViewModelMain
{
    public MyPage p { get; set; }

    public ViewModelMain()
    {
        p = new MyPage(new ModelPage() { NbrLine = 5, NbrCapsLock = 1 });
    }
}

实际上你可以把p变换成这样的性质。WPF不能绑定到简单属性

public class ViewModelMain
{
    public MyPage p { get; set; }

    public ViewModelMain()
    {
        p = new MyPage(new ModelPage() { NbrLine = 5, NbrCapsLock = 1 });
    }
}