Laden...

MVVM + ScrollViewer

Erstellt von userid4106 vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.484 Views
U
userid4106 Themenstarter:in
457 Beiträge seit 2006
vor 12 Jahren
MVVM + ScrollViewer

Hallo,

ich habe einen ScrollViewer der, abhängig welcher Button gedrückt wird, einen unterschiedlichen Content hat. Bei dem Content handelt es sich immer um WrapPanels.

Hier mal das Model für die WrapPanels usw.


using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows.Controls;

namespace TYM_NET.Bereiche.TYM.Model
{
    internal class Controls_Model : INotifyPropertyChanged
    {
        private ObservableCollection<Button> buttons;
        public  ObservableCollection<Button> Buttons
        {
            get { return buttons; }
            set
            {
                buttons = value;
                OnPropertyChanged("Buttons");
            }
        }

        private WrapPanel panel;
        public  WrapPanel Panel
        {
            get { return panel; }
            set
            {
                panel = value;
                OnPropertyChanged("Panels");
            }
        }
        
        //private ObservableCollection<Parkplatz_Button_Style> plätze_Normal;
        public  ObservableCollection<Parkplatz_Button_Style> Plätze_Normal { get; set; }

        //private ObservableCollection<Parkplatz_Button_Style> plätze_Quer;
        public  ObservableCollection<Parkplatz_Button_Style> Plätze_Quer { get; set; }

        //private ObservableCollection<WrapPanel> panels;
        public  ObservableCollection<WrapPanel> Panels { get; set; }


        #region INotifyPropertyChanged Members
        public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
        #endregion  
    }
}

In dem ViewModel befülle ich dann das Model und im xaml habe ich ein Binding:


        <Grid.DataContext>
            <local:TYM_ViewModel />
        </Grid.DataContext>
        <ItemsControl x:Name="Reiter_Plätze" DataContext="{Binding Path=Controls}" ItemsSource="{Binding Path=Buttons}" ItemTemplate="{StaticResource Reiter_PlätzeDataTemplate}" Margin="0,0,216,0" Height="40" VerticalAlignment="Top" Background="#56141414" >
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <VirtualizingStackPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>

        <ScrollViewer x:Name="ScrollBar_Yards" DataContext="{Binding Path=Controls}" Content="{Binding Path=Panel}" Margin="0,44,216,0" Height="617" Background="#56141414" Template="{DynamicResource ScrollViewerControlTemplate1}" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" Width="856" PreviewMouseMove="ScrollBar_Yards_PreviewMouseMove" PreviewMouseDown="ScrollBar_Yards_PreviewMouseDown" />


Mein Problem ist jetzt, dass in dem ScrollViewer nichts angezeigt wird:-( Mit den Buttons allerdings klappt es.
Zur Info: Dieses Panel kommt ursprünglich aus der ObservableCollection Panels.

U
1.578 Beiträge seit 2009
vor 12 Jahren

WTF??

Was haben die View Controls im C# Code verloren? und zudem in einem "Model" der dann von nem ViewModel gefüllt wird?

Du hast MVVM komplett falsch umgesetzt.

6 Setzen.

U
userid4106 Themenstarter:in
457 Beiträge seit 2006
vor 12 Jahren

Eigentlich bin ich gerade dabei auf MVVM umzubauen:-P
Problem ist, dass ich die Controls zur Laufzeit generiere. Die Informationen usw. dazu kommen aus einer Datenbank. Deswegen hab ich die Dinger im Code ausgelagert, nicht gut^^?