2016-06-24 22 views
0

プログラマー、 実行時にItemsSourceバインディングを変更する必要があります。 私のDataGridでは、タイプ "Akte"のアイテムを見たいと思っています。 のViewModelでこのコードは動作します:タイプバインディングの依存関係プロパティへのバインド

#region DependencyProperty AktenDataGrid 
    public static readonly DependencyProperty AktenDataGridProperty = 
     DependencyProperty.Register("AktenDataGrid", typeof(DataGrid), typeof(UebersichtVM)); 

    public DataGrid AktenDataGrid 
    { 
     get { return (DataGrid)GetValue(AktenDataGridProperty); } 
     set 
     { 
      SetValue(AktenDataGridProperty, value); 
      OnPropertyChanged(); 
     } 
    } 
    #endregion DependencyProperty AktenDataGrid 

    private void OnSammelakteChangedCommand(object parameter) 
    { 
     Binding aktenBinding; 

     if (null == AktenDataGrid || null == parameter) 
     { 
      aktenBinding = new Binding("AngemeldeterBenutzer.AktenBenutzer"); 
     } 
     else 
     { 
      aktenBinding = new Binding("SelectedItem.Sammelakte.SammelakteAkten"); 
      aktenBinding.ElementName = "sammelaktenDataGrid"; 
     } 

     AktenDataGrid.SetBinding(DataGrid.ItemsSourceProperty, aktenBinding); 
    } 

コマンドは、私のsammelaktenDataGridでの選択を変更することで実行されます。 私のUserControlのコードビハインドで、影響を受けるDataGridでプロパティAktenDataGridを初期化する必要があります。

私はViewModelを変更する必要があります。それは、TypeBindingのDependencyProperty AktenDataGridBindingを提供し、ItemSourceをこのプロパティにバインドしたいと考えています。 試しましたが、うまくいきません。 私を助けることができますか?

+3

私は今、コピー/貼り付けをMarkusHütterさんのコメント@に人々の量を想像することができGoogle翻訳... :) - FYI、それは英語に(ない非常によく)翻訳:「ヒント:私は希望常にプログラムを英語でそれで、クラス/変数/関数名。ドイツ語圏以外の人々があなたのコードを理解しやすくなります。 " –

+3

@Markusもう一つの小さなヒント、StackOverflowに関するコメント(質問と回答)は誰でも続く。 – Clemens

+0

ハハ、それについてはごめんなさい=) –

答えて

0

私はあなたが達成しようとしているもので、完全に明確ではないんだけど、多分これはそれです:

それはAngemeldeterBenutzer.AktenBenutzerが表示される場合にはnull、でない限り、これはDataGridSelectedItem.Sammelakte.SammelakteAktenが表示されます。

<DataGrid ItemsSource="{Binding Path=SelectedItem.Sammelakte.SammelakteAkten, ElementName=sammelaktenDataGrid}"> 
    <DataGrid.Style> 
     <Style TargetType="DataGrid"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=SelectedItem.Sammelakte.SammelakteAkten}" Value="{x:Null}"> 
        <Setter Property="ItemsSource" Value="{Binding Path=AngemeldeterBenutzer.AktenBenutzer}" /> 
       </DataTrigger>          
      </Style.Triggers> 
     </Style> 
    </DataGrid.Style>    
</DataGrid> 
+0

良いとは思うけど、うまくいきません:-( –

+0

私はいくつかのバリエーションを試してみましたが、バインディングを変更してx:Typeへの比較値を変えました。 –

関連する問題