(WPF) ObservableCollection<...> an eine Stackpanel Binden???



  • Hallo Ihr,

    ich versuch eine ObservableCollection an eine Stackpanel via WPF zu binden, aber es wird nix angezeigt, und ich hab eine keine Hinweise Fehler etc.

    Hier mein UserControl, welches das Stackpanel enthält:

    Codebehind:

    public partial class TrendControlSettings : UserControl
    	{
    		public TrendControlSettings(ZedGraphControl chartControl)
    		{
    			MyCurves = new ObservableCollection<MyTrendCurve>();
    			MyCurves.Add(new MyTrendCurve("Hello", "A", Enumerable.Empty<KeyValuePair<DateTime, double>>()));
    			MyCurves.Add(new MyTrendCurve("Welt", "A", Enumerable.Empty<KeyValuePair<DateTime, double>>()));
    
    			InitializeComponent();
    		}
    
    		public ObservableCollection<MyTrendCurve> MyCurves { get; private set; }
    	}
    

    XAML:

    <UserControl x:Class="ChartControlHost.TrendControlSettings"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    	xmlns:me="clr-namespace:ChartControlHost">
        <Grid>
    
    		<StackPanel Margin="1" Grid.Column="1">
    			<TextBlock Text="Curves" Margin="1" FontSize="13" Foreground="DarkSlateGray" />
    			<ItemsControl ItemsSource="{Binding MyCurves2}" Margin="1.5">
    				<ItemsControl.ItemTemplate>
    					<DataTemplate DataType="{x:Type me:MyTrendCurve}">
    						<TextBlock Text="{Binding Name}" FontWeight="Bold"></TextBlock>
    					</DataTemplate>
    				</ItemsControl.ItemTemplate>
    			</ItemsControl>
    		</StackPanel>
    
    		<!--<ListBox ItemsSource="{Binding MyCurves2}" Grid.Column="1">
    			<ListBox.ItemTemplate>
    				<DataTemplate DataType="{x:Type me:MyTrendCurve}">
    					<StackPanel Orientation="Horizontal" Background="Beige" Height="30">
    						<TextBlock Text="{Binding Name}" FontWeight="Bold"></TextBlock>
    
    					</StackPanel>
    				</DataTemplate>
    			</ListBox.ItemTemplate>
    		</ListBox>-->
    	</Grid>
    </UserControl>
    

    und hier mein Item Model, welches als ViewModel Item im Stackpanel visualisiert wird:

    public class MyTrendCurve
    	{
    		public MyTrendCurve(
    			string name,
    			string unit,
    			IEnumerable<KeyValuePair<DateTime, double>> values)
    		{
    			Name = name;
    			Unit = unit;
    			_values = values;
    
    		//	ValueCount = values.Count();
    		}
    
    		private IEnumerable<KeyValuePair<DateTime, double>> _values;
    
    		#region ViewModel
    
    		public string Name { get; private set; }
    		public string Unit { get; private set; }
    		public string Label { get { return Name + "(" + Unit + ")"; } }
    		public int ValueCount { get; private set; }
    
    		#endregion
    	}
    

    Ich hoffe ihr könnt mir weiter helfen!



  • GELÖST:

    in XAML hab ich noch vollgendes hinzugefügt

    <UserControl x:Class="ChartControlHost.TrendControlSettings"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:me="clr-namespace:ChartControlHost"
    x:Name="root">
    <Grid DataContext="{Binding ElementName=root}">
    .....
    </Grid>
    </UserControl>


Anmelden zum Antworten