2011-08-10 5 views
1

へのアクセス私は静的な列を持っている、と私は、私はいくつかの動的な列を追加するボタンにクリックしたとき:ダイナミックグリッド列と私のグリッドでStaticResources

class ItemConstraintColumn : DataGridTemplateColumn 
     { 
      public ItemConstraintColumn(ReportEventItemConstraint _ic) 
      { 
       StringBuilder sb = new StringBuilder(); 
       sb.Append("<DataTemplate "); 
       sb.Append("xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' "); 
       sb.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' "); 
       sb.Append("xmlns:local='clr-namespace:MyNameSpace;assembly=MyAssembly'> "); 
       sb.Append("<local:SignalControl DataContext=\"{Binding Source={StaticResource SignalControlVM}}\" />"); 
       sb.Append("</DataTemplate>"); 

       CellTemplate = (DataTemplate)XamlReader.Load(sb.ToString()); 
       Header = _ic.Name; 
      } 
     } 

問題は、私はStaticResourceにアクセスすることはできませんです私のXamlページで宣言されているので、私のコントロールをバインドすることはできません... どうしたらいいのですか?あなたは、静的なリソースを見つけるために、以下のコードを使用することができます後ろにコードで おかげ

+0

+1は、何か異なるものを提供しています(あなたのコードを提供しています)。常に助けてください:) –

+0

最後に、私のViewModelでプロパティを使用するとバインディングが正しいです...前に間違いました:) – user887691

答えて

1

はXAMLで

を宣言this.FindResource(「ResourceNameの」))

0

あなたがしているように見えます完全に自己完結型のXamlファイルとしてDataContextを作成します。

バインディングはロード時に評価され、スニペットはビジュアルツリーの一部ではないため、何も見つかりません(親ページがないため、解析された時点ではリソースはありません)。

あなたはそれをロードするほうが良いです。その中のlocal:SignalControl要素を見つけて、代わりにコードを使用してDataContextをバインドします。

リソースの配置に関するShebinの提案は、仕事の最後の部分を行います。すなわち、バインドするリソースを見つける。

関連する問題