编程器, 我需要在运行时更改ItemsSource Binding。 在我的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的Code-Behind中使用受影响的DataGrid初始化Property AktenDataGrid。
我想改变我的ViewModel方式,它提供了Type Binding的DependencyProperty AktenDataGridBinding,我想将ItemSource绑定到这个Property。 我尝试了,但它不起作用。 你能救我吗?
答案 0 :(得分:0)
我不清楚你要完成什么,但也许就是这样:
这将在SelectedItem.Sammelakte.SammelakteAkten
中显示DataGrid
,除非它是null
,在这种情况下,它会显示AngemeldeterBenutzer.AktenBenutzer
。
<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>