22

私が作成し、この質問で参照するファイルは次のとおりです。

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をすでに設定しているのに、バインドしようとしているDataContext /プロパティとしてViewModelの技術者を解決できないのはなぜですか?

編集:

以下のコメントの懸念に従って。これは設計時の問題であり、コンパイル時ではありません。私は最初にこれを示すべきでした。

4

2 に答える 2

45

デザイン時のサポートを得るには、xaml でデータ コンテキストのタイプを指定する必要があります。コード ビハインドでデータ コンテキストを割り当てても、デザイナーはそれを認識しません。

以下を xaml に追加してみてください。

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

詳細については、このリンクを参照してください。

于 2013-02-26T23:54:35.810 に答える