I am trying to two-way bind XamZoombar.Range to a property in a view model. I have tried it a number of different ways. But none of them work. Binding Range directly to a property of type Infragistics.Controls.Range in the view model throws a XAML parsing (null object reference) exception.
Two-way binding the individual dependency properties Minimum/Maximum has very odd behavior. Both the getters get called but only the Maximum value is ever actually used. Neither of the setters are ever called when I move the thumbs of the zoombar.
Between the two, I prefer to bind the Minimum/Maximum properties individually, but at this point I will take anything.
Attached is a very bare-bones example project that demonstrates what I am seeing. In the commented out code in the XAML you will see some of the other things I have tried that also didn't work.
From what I can tell this looks like a bug in XamZoombar.
My mistake. It is fixed. I was getting the same error as before (same line number) but it was being caused by something else. Silverlight runtime errors aren't very specific. Sorry about that.
Hello,
Could you check if your project references the dll's from the Service Release.
I downloaded your sample project and referenced it to the 10.3.20103.2192 assemblies. In MainPage.xaml I uncommented line 22 and commented lines 24, 25 and 26.
Here is the modified content of MainPage.xaml:
<UserControl x:Class="XamZoombarTest.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:ig="http://schemas.infragistics.com/xaml" xmlns:local="clr-namespace:XamZoombarTest" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Grid> <Grid.Resources> <!--<local:ViewModelToRangeConverter x:Key="ViewModelToRangeConverter" /> <ig:Range x:Key="range" Minimum="{Binding Path=MyMinimum, Mode=TwoWay}" Maximum="{Binding Path=MyMaximum, Mode=TwoWay}" />--> </Grid.Resources> <ig:XamZoombar x:Name="Zoombar" Minimum="0" Maximum="100" SmallChange="10" LargeChange="20" Width="400" Height="100" Range="{Binding Path=MyRange, Mode=TwoWay}"> <!--Range="{StaticResource range}">--> <!--<ig:XamZoombar.Range> <ig:Range Minimum="{Binding Path=MyMinimum, Mode=TwoWay}" Maximum="{Binding Path=MyMaximum, Mode=TwoWay}" /> </ig:XamZoombar.Range>--> <ig:XamZoombar.HorizontalPreviewContent> <ig:XamLinearGauge> <ig:XamLinearGauge.Background> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1" > <GradientStop Color="Red" Offset="0"></GradientStop> <GradientStop Color="Blue" Offset="1"></GradientStop> </LinearGradientBrush> </ig:XamLinearGauge.Background> <ig:XamLinearGauge.Scales> <ig:LinearGaugeScale StartValue="0" EndValue="100"> <ig:LinearGaugeScale.LabelGroups> <ig:LinearGaugeLabelGroup /> </ig:LinearGaugeScale.LabelGroups> </ig:LinearGaugeScale> </ig:XamLinearGauge.Scales> </ig:XamLinearGauge> </ig:XamZoombar.HorizontalPreviewContent> </ig:XamZoombar> </Grid> </UserControl>
When I run the project, the binding works.
I have attached the modified project:
Could you run the project and see if it works for you.
Thanks!
I just installed 10.3.20103.2192 and it still throws the null reference exception. Can you confirm that this is fixed? This is holding me up. I could really use this fix.
This sounds reasonable. We logged your request in our system like an issue.
Thanks. I'll wait for the service update. Will Infragistics ever allow two-way binding of Range.Minimum and Range.Maximum? I really don't like putting data types like Infragistics.Controls.Range in the ViewModel.