3

DataGrid で CheckBox をバインドしようとしましたが、ホバー中に取得したデザイナーでDoImport

データコンテキストが不明なため、シンボル 'DoImport' を解決できません

私のコードは

<Window x:Class="MyWindow">
  <Grid>
    <DataGrid x:Name="MyGrid" ItemsSource="{Binding}">
        <DataGrid.Columns>
            <DataGridCheckBoxColumn Header="Import" 
                   Binding="{Binding Path=DoImport, 
                             Mode=TwoWay, 
                             UpdateSourceTrigger=PropertyChanged}" />
        </DataGrid.Columns>
    </DataGrid>
  </Grid>
</Window>

public partial class MyWindow : Window, INotifyPropertyChanged {
    public MyWindow(ObvervableCollection<Part> parts) {
        _parts = parts;
        MyGrid.DataContext = _parts;
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged(string name) {
        if (PropertyChanged != null) {
            PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }

    private ObservableCollection<Part> _parts;
    public ObservableCollection<Part> Parts {
        get { return _parts; }
        set
        {
            _parts = value;                    
            OnPropertyChanged("Parts");
        }
    }
}

_parts、DataGrid を満たす項目のコレクションです。Partクラスは次のとおりです。

public class Part {
    public bool DoImport { get; set; }
}
4

1 に答える 1

2

デザイナーはObvervableCollection<Part>MyWindow コンストラクターにインスタンスを提供できません。これは、方法がわからないためです。そのため、デザイナーでコンストラクターを呼び出すことはできません。そのため、デザイナーは「データコンテキストが不明なため、シンボル 'DoImport' を解決できません」。Visual Studio のデザイナーは、適切に機能するために、パラメーターのない既定のコンストラクターを想定しています。

多分あなたはそれをチェックアウトする必要があります: http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/30/sample-data-in-the-wpf-and-silverlight-designer.aspx またはさらに良い. ..blend にデザイン サンプル データを作成してもらいます。

于 2013-06-05T11:38:35.623 に答える