Binding ist zu früh

  • WPF
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von EugenIS.

    XML-Quellcode

    1. ListOfVisibleColumns="{Binding ListOfVisibleColumns}"


    C#-Quellcode

    1. public partial class jcDataGrid : DataGrid
    2. {
    3. public jcDataGrid()
    4. {
    5. InitializeComponent();
    6. }
    7. public static readonly DependencyProperty ListOfVisibleColumnsProperty = DependencyProperty.Register(nameof(ListOfVisibleColumns), typeof(ObservableCollection<string>), typeof(jcDataGrid), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.Journal));
    8. public ObservableCollection<string> ListOfVisibleColumns
    9. {
    10. get => (ObservableCollection<string>)GetValue(ListOfVisibleColumnsProperty);
    11. set => SetValue(ListOfVisibleColumnsProperty, value);
    12. }
    13. private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    14. {
    15. try
    16. {
    17. if (ListOfVisibleColumns == null)
    18. return;
    19. if (ListOfVisibleColumns.FirstOrDefault(f => string.Equals(f, e.Column.Header.ToString())) == null)
    20. {
    21. e.Column.CanUserSort = false;
    22. e.Column.Visibility = Visibility.Collapsed;
    23. }
    24. else
    25. {
    26. e.Column.CanUserSort = true;
    27. e.Column.Visibility = Visibility.Visible;
    28. }
    29. }
    30. catch (Exception ex)
    31. {
    32. jcStatic.ShowError(ex);
    33. }
    34. }
    35. }
    36. So sieht der Code aus...
    Ich glaub das ist falsch was du machst. Man hat Properties im ViewModel die im View an die DependencyProperties der Control-Klasse gebunden werden. Du willst im View die DependencyProperty der Control-Klasse an sich selbst binden.

    Oder warte hast du im ViewModel eine Property mit den Namen ListOfVisibleColumns?

    Dann zeig mal deine ViewModel klasse.

    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D

    C#-Quellcode

    1. public abstract partial class jcDataBaseEventObservableCollection<T>
    2. {
    3. private ObservableCollection<string> _ListOfVisibleColumns;
    4. public ObservableCollection<string> ListOfVisibleColumns
    5. {
    6. get
    7. {
    8. if (_ListOfVisibleColumns == null)
    9. _ListOfVisibleColumns = new ObservableCollection<string>();
    10. return _ListOfVisibleColumns;
    11. }
    12. }
    13. ....


    ListOfVisibleColumns kann an sich nicht null sein. Wenn ich ein anderen Control aufrufe, dann wieder genau das selbe, funktioniert es plötzlich...