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 });
}
}