Silverlight UserControl binding throwing a XamlParseException, AG_E_PARSER_BAD_PROPERTY_VALUE
I've built a SpinButton user control. SpinButton.xaml has:
<UserControl x:Class="MyApp.SpinButton" x:Name="Spinner" 
    [...]
    >
    <Grid x:Name="LayoutRoot">
        <StackPanel Margin="8,8,8,0" VerticalAlignment="Top" Orientation="Horizontal">
            <TextBox x:Name="Text" TextWrapping="Wrap" Text="{Binding Count, Mode=TwoWay, ElementName=Spinner}" TextAlignment="Center" Width="120" InputScope="TelephoneNumber"/>
            <Button x:Name="PlusButton" Content="+" BorderThickness="3,3,0,3" Margin="-12,0,0,0" Width="55" Click="PlusButton_Click" Padding="0" Style="{StaticResource ButtonStyle}" />
            <Button x:Name="MinusButton" Content="-" Width="55" Click="MinusButton_Click" Padding="0" Style="{StaticResource ButtonStyle}" />
        </StackPanel>
    </Grid>
</UserControl>
And SpinButton.xaml.cs has
public partial class SpinButton : UserControl, INotifyPropertyChanged
{
    private int count, min, max;
    public int Count
    {
        get { return count; }
        set { count = value; Changed("Count"); }
    }
    public int Min
    {
        get { return min; }
        set { min = value; Changed("Min"); Changed("Count"); }
    }
    public int Max
    {
        get { return max; }
        set { max = value; Changed("Max"); Changed("Count"); }
    }
    public SpinButton()
    {
        InitializeComponent();
    }
    public event PropertyChangedEventHandler PropertyChanged;
    private void Changed(string property)
    {
        if (Count < Min) Count = Min;
        if (Count > Max) Count = Max;
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new Prop开发者_StackOverflowertyChangedEventArgs(property));
        }
    }
    private void PlusButton_Click(object sender, RoutedEventArgs e)
    {
        Count++;
    }
    private void MinusButton_Click(object sender, RoutedEventArgs e)
    {
        Count--;
    }
}
I want to use this control in a page. This works perfectly:
<local:SpinButton Count="20" Min="0" Max="255" />
But this doesn't:
<local:SpinButton Count="{Binding SomeIntProperty}" Min="0" Max="255" />
All I'm getting is a XamlParseException with error AG_E_PARSER_BAD_PROPERTY_VALUE when assigning the Count attribute.
Any idea what could be wrong and how I could fix it?
I believe Count needs to be a DependencyProperty in order to support data binding.
Change Count to a dependency property...that should help.
Bindable properties on custom controls should be dependency properties.
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论