的原因是,WPF的数据绑定是在运行时进行的,而设计器只能在设计时进行预览,无法执行运行时的代码逻辑。
要解决这个问题,可以采取以下几种方法:
public class ViewModel
{
public string Text { get; set; }
public ViewModel()
{
if (DesignerProperties.GetIsInDesignMode(new DependencyObject()))
{
Text = "Design Time Data";
}
}
}
<Window ...
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:YourNamespace"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance local:DesignTimeViewModel, IsDesignTimeCreatable=True}">
<Window.DataContext>
<local:ViewModel />
</Window.DataContext>
...
</Window>
public class DesignTimeViewModel
{
public string Text { get; set; } = "Design Time Data";
}
<TextBox Text="{Binding Text, Mode=OneWay, Source={d:DesignInstance local:DesignTimeViewModel}}" />
需要注意的是,这些方法只是为了在设计器中显示绑定效果,实际运行时的数据绑定仍然需要在运行时进行。
领取专属 10元无门槛券
手把手带您无忧上云