繁体   English   中英

MVVM 绑定在设计时不起作用

[英]MVVM Binding not working in design-time

我试图将几个按钮的可见性绑定到视图模型中的一些布尔值,并使其在设计时工作。 我做了几次,从来没有遇到过问题,但现在它不起作用,我不知道为什么。 请注意,当我运行应用程序时一切正常。

我将精华提取到一个单独的应用程序中,它仍然不起作用!

我的 XAML:

<Window x:Class="BindingTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:bindingTest="clr-namespace:BindingTest"
        Title="MainWindow" Height="350" Width="525"
        mc:Ignorable="d"
        d:DataContext="{d:DesignInstance bindingTest:TestViewModel, d:IsDesignTimeCreatable=true}">
    <Grid>
        <Grid.Resources>
            <BooleanToVisibilityConverter x:Key="BoolToVis"/>
        </Grid.Resources>
        <StackPanel>
            <Button Visibility="{Binding IsButton1Visible, Converter={StaticResource BoolToVis}}">Hallo 1</Button>
            <Button Visibility="{Binding Button2Visibility}">Hallo 2</Button>
            <Button>Hallo 3</Button>
        </StackPanel>
    </Grid>
</Window>

我的视图模型:

public class TestViewModel
{
    public bool IsButton1Visible
    {
        get { return true; }
    }

    public Visibility Button2Visibility
    {
        get { return Visibility.Hidden; }
    }
}

为了让它在真正的应用程序中工作,我添加到 XAML 的构造函数中:

DataContext = new TestViewModel();

这一切都很简单,但为什么在设计器中不起作用?? 过去我总是让这个工作,现在我尝试了几个小时......这不是唯一不工作的绑定,但为什么连这个都不工作?

预期结果:

  • Button1 可见
  • Button2 隐藏
  • Button3 可见

设计器中的结果:

  • Button1 折叠
  • Button2 可见
  • Button3 可见

更新:设计时 DataContext 绑定不起作用的问题是由于错误地使用了IsDesignTimeCreatable属性的d:命名空间前缀。

所以,改变

d:IsDesignTimeCreatable=True

IsDesignTimeCreatable=True

一切都应该没问题。 (我提交给 MS 的错误报告也将使用此信息进行更新。)


由于设计时 DataContext 绑定不起作用的问题在 VS2015 和 VS2013 中始终可重现,当IsDesignTimeCreatabled:命名空间为前缀时(请参阅问题下方的评论),我决定向 Microsoft 提交错误报告: 问题 # 1651633 “WPF 设计器:Designtime DataContext 绑定损坏?” .

让我们看看微软将如何跟进这个问题。 它应该得到解决,因为这样的问题会使开发人员措手不及,并使他重新安装 Visual Studio 没有任何好处......;)

如果代码没有问题,可能还有其他棘手的问题:

在 Visual Studio 的设计器中,2019 年引入了一个新按钮,可以启用/禁用设计数据的预览

这是位于设计器窗口左侧的一个非常小的按钮。 它的工具提示是“启用项目代码”。

单击这个重要的切换按钮以查看设计数据。 (但请注意,如果它已启用,则不要禁用它。)

用于启用设计器数据的按钮

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM