8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

我需要做什么才能进一步限定 DataContext 的绑定?

dr_barto 1月前

33 0

我已经创建并将在这个问题中引用的文件是:TechnicainSelectionView.xamlTechnicianSelectionView.csTechnicianSelectionViewModel.csTechnician.cs(代码优先实体)我...

我在这个问题中创建并将引用的文件是:

TechnicainSelectionView.xaml
TechnicianSelectionView.cs
TechnicianSelectionViewModel.cs
Technician.cs (Code First Entity)

我的 TechnicanSelectionView.xaml 中有以下 xaml

<UserControl xmlns etc... here" 
             d:DesignHeight="48" d:DesignWidth="300">
    <Grid>
        <StackPanel>
            <Label Content="Select a Technican to run the test" FontWeight="Bold"></Label>
            <ComboBox ItemsSource="{Binding Technicians, Mode=TwoWay}"></ComboBox>
        </StackPanel>
    </Grid>
</UserControl>

ItemSource 设置为绑定到的 Technicians 属性表明它 Cannot resolve Technicians due to an unknown DataContext.

所以如果我们查看我的 TechnicianSelectionView.cs 代码隐藏...

public partial class TechnicianSelectionView : UserControl
{
    public TechnicianSelectionViewModel ViewModel { get; private set; }

    public TechnicianSelectionView()
    {
        InitializeComponent();

        Technician.GenerateSeedData();

        ViewModel = new TechnicianSelectionViewModel();
        DataContext = ViewModel;
    }
}

...我们看到我正在将视图的 DataContext 设置为我的 TechnicianSelectionViewModel...

public class TechnicianSelectionViewModel : ViewModelBase
{
    public ObservableCollection<Technician> Technicians { get; set; }

    public TechnicianSelectionViewModel()
    {
        Technicians = new ObservableCollection<Technician>();
    }

    public bool IsLoaded { get; private set; }

    public void LoadTechnicians()
    {
        List<Technician> technicians;

        using (var db = new TestContext())
        {
            var query = from tech in db.Technicians
                        select tech;

            foreach (var technician in query)
            {
                Technicians.Add(technician);
            }
        }

        IsLoaded = true;
    }
}

技术人员是我的 ViewModel 上的一个属性......

那么,既然已经为视图设置了 DataContext,为什么它不能将 ViewModel 上的技术人员解析为它要绑定到的 DataContext/属性?

编辑:

正如下面评论中提到的担忧。这是一个设计时问题,而不是编译时问题。我应该在一开始就指出这一点。

帖子版权声明 1、本帖标题:我需要做什么才能进一步限定 DataContext 的绑定?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由dr_barto在本站《xaml》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 在我的 Xamarin Forms Xaml 文件中,我在标题(ContentPage 标签)中使用了以下几行,并且它按照我想要的方式完美地工作。

    基本上现在

    • 智能感知显示绑定中的字段
    • p2

      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:vm="clr-namespace:YourApplicationName.ViewModels;assembly=YourApplicationName"mc:Ignorable="d"d:DataContext="{d:DesignInstance {x:Type vm:CurrentPageViewModel}}"
  • 没问题。还值得注意的是,尽管有警告消息,您的应用仍可能完美运行。我很少指定 DataContext 类型,运行时一切都会顺利完成。大多数时候我只是忽略该警告。

  • @Brandon 谢谢你的帮助,Brandon。这确实有效。也谢谢你为这篇文章所做的研究。

  • @BrentStewart 这确实是设计时的问题。我没有提到这一点。我会进行相应更新。

  • WITC 1月前 0 只看Ta
    引用 6

    虽然没有具体提到,但我在设计时经常看到此错误消息,因此我假设他指的是此内容。此外,他指出“将要绑定到?”,这听起来像是设计时,因为听起来应用程序尚未运行。

  • 您需要在 xaml 中指定数据上下文的类型才能获得设计时支持。即使您在代码隐藏中分配了数据上下文,设计器也不会识别它。

    尝试将以下内容放入你的 xaml 中:

    d:DataContext="{d:DesignInstance vm:TechnicianSelectionViewModel}"
    

    请参阅 此链接 了解更多详细信息。

返回
作者最近主题: