Benutzer mit den meisten Antworten
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Frage
-
Hallo,
ich habe im VS2010 im XAML einen Slider mit dem Namen slider1 eingefügt, welcher dann ein Rechteck Skalieren soll. Im Code habe ich dann folgendes eingefügt:
ScaleTransform sct = new ScaleTransform(); private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { sct.ScaleX = slider1.Value; sct.ScaleY = slider1.Value; cv1.RenderTransform = sct; }
Beim Ausführen meldet VS dann den Fehler bei slider1.Value: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.".
In der MainPage.g.cs existiert jedoch der Eintrag:
/// <summary> /// InitializeComponent /// </summary> [System.Diagnostics.DebuggerNonUserCodeAttribute()] public void InitializeComponent() { if (_contentLoaded) { return; } _contentLoaded = true; System.Windows.Application.LoadComponent(this, new System.Uri("/SilverlightApplication2;component/MainPage.xaml", System.UriKind.Relative)); this.LayoutRoot = ((System.Windows.Controls.Grid)(this.FindName("LayoutRoot"))); ... this.slider1 = ((System.Windows.Controls.Slider)(this.FindName("slider1"))); ... }
Was mache ich verkehrt?
Gruß
Dirk
Montag, 4. Oktober 2010 20:59
Antworten
-
Ich habe folgendes herausgefunden - sobald ich bei dem Slider ein Minimumwert eingebe, kommt der Fehler. Sobald Minimum weg ist, funktioniert mein Vorhaben.
Hier mal meine veränderte Version mit Fehler (Minimum - sobald man es weglöscht, funktioniert alles):
<Grid x:Name="LayoutRoot" Background="White"> <Grid.ColumnDefinitions> <ColumnDefinition Width="100" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Canvas Grid.Column="1" Background="DarkGray"> <Rectangle x:Name="cv1" Fill="Beige" MouseLeftButtonDown="Canvas_MouseLeftButtonDown" Width="200" Height="100" VerticalAlignment="Top" d:LayoutOverrides="Height" Margin="10,10,0,0"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform x:Name="scaletransform1" ScaleX="1" ScaleY="1"></ScaleTransform> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> </Canvas> <StackPanel Grid.Column="0" HorizontalAlignment="Left"> <dataInput:Label Height="25" HorizontalAlignment="Left" Name="label1" Width="100" /> <Slider Height="23" x:Name="slider1" Width="100" ValueChanged="slider1_ValueChanged" Minimum="1" Maximum="5" /> <dataInput:Label Height="25" Name="label2" Width="100" Content="{Binding ElementName=slider1,Path=Value}" /> </StackPanel> </Grid>
Hier der dazugehörige Code:
public MainPage() { InitializeComponent(); slider1.Value = 1; } private void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { label1.Content = "x: " + (Math.Round(e.GetPosition(cv1).X)).ToString(); label1.Content += ", y: " + (Math.Round(e.GetPosition(cv1).Y)).ToString(); } private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { scaletransform1.ScaleX = slider1.Value; scaletransform1.ScaleY = slider1.Value; }
Gruß
Dirk
- Als Antwort markiert Robert Breitenhofer Mittwoch, 12. Januar 2011 15:58
Mittwoch, 6. Oktober 2010 15:22
Alle Antworten
-
Hallo Dirk,
this.slider1 = ((System.Windows.Controls.Slider)(this.FindName("slider1"))); ... }
setz mal bitte hier und an der entsprechenden Zeile, die den Fehler verursacht, einen Breakpoint und schau nach, ob die o.a. Zeile überhaupt durchlaufen wird und für die Fehlerzeile, was genau nun "null" bzw. "nothing" ist. Ggfs. existiert auch einfach "sct" oder "cv1" nicht.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET CommunityDienstag, 5. Oktober 2010 22:22 -
Ich habe folgendes herausgefunden - sobald ich bei dem Slider ein Minimumwert eingebe, kommt der Fehler. Sobald Minimum weg ist, funktioniert mein Vorhaben.
Hier mal meine veränderte Version mit Fehler (Minimum - sobald man es weglöscht, funktioniert alles):
<Grid x:Name="LayoutRoot" Background="White"> <Grid.ColumnDefinitions> <ColumnDefinition Width="100" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Canvas Grid.Column="1" Background="DarkGray"> <Rectangle x:Name="cv1" Fill="Beige" MouseLeftButtonDown="Canvas_MouseLeftButtonDown" Width="200" Height="100" VerticalAlignment="Top" d:LayoutOverrides="Height" Margin="10,10,0,0"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform x:Name="scaletransform1" ScaleX="1" ScaleY="1"></ScaleTransform> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> </Canvas> <StackPanel Grid.Column="0" HorizontalAlignment="Left"> <dataInput:Label Height="25" HorizontalAlignment="Left" Name="label1" Width="100" /> <Slider Height="23" x:Name="slider1" Width="100" ValueChanged="slider1_ValueChanged" Minimum="1" Maximum="5" /> <dataInput:Label Height="25" Name="label2" Width="100" Content="{Binding ElementName=slider1,Path=Value}" /> </StackPanel> </Grid>
Hier der dazugehörige Code:
public MainPage() { InitializeComponent(); slider1.Value = 1; } private void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { label1.Content = "x: " + (Math.Round(e.GetPosition(cv1).X)).ToString(); label1.Content += ", y: " + (Math.Round(e.GetPosition(cv1).Y)).ToString(); } private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) { scaletransform1.ScaleX = slider1.Value; scaletransform1.ScaleY = slider1.Value; }
Gruß
Dirk
- Als Antwort markiert Robert Breitenhofer Mittwoch, 12. Januar 2011 15:58
Mittwoch, 6. Oktober 2010 15:22