UWP c#绑定到ItemsPanel / Custom Panel(模板)

时间:2016-01-11 21:24:16

标签: c# xaml windows-10 uwp

我终于设法用我自己的Panel创建了一个GridView。布局很好。现在我希望能够将我的ViewModel的值绑定到我自己的Panel。你能帮我这么做吗?目前我正在更改页面后面代码中的值,我不喜欢...

目前我正在尝试执行x:绑定并收到错误:"对象引用未设置为对象的实例。" 我不知道"正常"绑定会有所帮助。我确实尝试过,但没有成功。

  1. 自定义面板

    NSKeyedUnarchiver
  2. XAML:

    public class PRGD010_GridViewPanel : Panel
    {
    public int NumberRowsOrColumns
    {
        get { return (int)GetValue(NumberRowsOrColumnsProperty); }
        set { SetValue(NumberRowsOrColumnsProperty, value < 1 ? 0 : value); }
    }
    
    public static readonly DependencyProperty NumberRowsOrColumnsProperty = DependencyProperty.Register("NumberRowsOrColumns", typeof(int), typeof(PRGD010_GridViewPanel), new PropertyMetadata(1d, OnNumberRowsOrColumnsPropertyChanged));
    private static void OnNumberRowsOrColumnsPropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
    {
        (source as PRGD010_GridViewPanel).InvalidateMeasure();
    }
    
    public int Offset
    {
        get { return (int)GetValue(StartPositionProperty); }
        set { SetValue(StartPositionProperty, value >= this.NumberRowsOrColumns ? this.NumberRowsOrColumns - 1 : value); }
    }
    
    public static readonly DependencyProperty StartPositionProperty = DependencyProperty.Register("Offset", typeof(int), typeof(PRGD010_GridViewPanel), new PropertyMetadata(0d, OnStartPositionPropertyChanged));
    private static void OnStartPositionPropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
    {
        (source as PRGD010_GridViewPanel).InvalidateMeasure();
    }
    
    public PRGD010_GridViewPanel()
    {
    }
    }
    

1 个答案:

答案 0 :(得分:1)

当你使用x:Bind时,绑定的上下文是页面或用户控件本身(而不是普通绑定使用的DataContext),所以在后面的代码中你需要main_viewmodel,View Model和ref_cat_id的属性。如果其中一个或多个为空或不存在,则可以解释您正在获取的错误