1

私は.NET 4が初めてで、何らかのタイプのリストを受け入れるカスタムアクティビティを設計する方法を探しています(私の例ではFormInput)。したがって、このアクティビティの各インスタンスは、FormInput の独自のプライベート リストを保持できます。

このコードニペットは、私がしようとしているアクティビティ デザイナーからのものですが、何らかの理由で機能しません。ワークフローでアクティビティを使用すると、データグリッドが無効になります。

<Grid>...
   <DataGrid AutomationProperties.AutomationId="InputElements" 
      ItemsSource="{Binding Path=ModelItem.InputElements}" CanUserAddRows="True"
      CanUserDeleteRows="True"></DataGrid>
...
</Grid>

これは、リストを保持するカスタム アクティビティ クラスのプロパティです。

public ObservableCollection<FormInput> InputElements

どんな助けでも大歓迎です。

4

2 に答える 2

1

私はそれを手に入れました、問題は列挙不可能なオブジェクトへのバインディングだったと思います。

ModelItemプロパティ値に直接バインドすると、問題が解決しました

public partial class ActivityDesigner1
{
    public ObservableCollection<FormInput> MyProperty
    {
        get { return (ObservableCollection<FormInput>)ModelItem.Properties["InputElements"].ComputedValue; }
    }
}

そしてデザイナーで:<DataGrid ItemsSource="{Binding Path=MyProperty}"...

ValueConverterを使用してそれを行うことができるはずです

このリンクに従って、最初のアイテムを追加する問題を解決してください

ObservableCollection を初期化することを忘れないでください

于 2011-12-01T02:32:10.863 に答える
0

DataContextofDataGridが正しく設定されているかどうかを確認し、コレクションにコード スニペットを使用します。

private ObservableCollection<FormInput> inputElements;

public ObservableCollection<FormInput> InputElements
{
    get
    {
        if (this.inputElements == null)
        {
            this.inputElements = new ObservableCollection<FormInput>();
        }

        return this.inputElements;
    }
}
于 2011-11-24T07:01:23.627 に答える