【发布时间】:2011-08-02 15:28:08
【问题描述】:
我知道这个话题已经讨论过了,但我还没有讨论过。正如我在有关此问题的其他示例中看到的那样,我正在尝试创建一些基本的自定义DataPagerUserControl。所以我做了以下事情:
XAML:
<ComboBox Name="Size" ItemsSource="{Binding PageSourceSize}"
SelectedValue="{Binding PageSizePager}" />
使用以下 C#:
ObservableCollection<int> _PageSourceSize;
public ObservableCollection<int> PageSourceSize
{
get { return _PageSourceSize; }
set
{
_PageSourceSize = value;
RaisePropertyChanged("PageSourceSize");
}
}
public MyDataPager()
{
DataContext = this;
PageSizePager = 10;
PageSourceSize = new ObservableCollection<int>() { 10, 20, 50,100 };
}
public int PageSizePager
{
get { return (int)GetValue(PageSizePagerProperty); }
set { SetValue(PageSizePagerProperty, value); }
}
public static readonly DependencyProperty PageSizePagerProperty =
DependencyProperty.Register("PageSizePager", typeof(int), typeof(MyDataPager), new PropertyMetadata(10));
从这里我打算在主要的UserControl 中使用我的寻呼机:
<local:MyDataPager PageSizePager="20" x:Name="MyDataPager1" />
这很好用,但我希望从我的viewModel 中获取价值:
<local:MyDataPager PageSizePager="{Binding Path=PageSize,Mode=TwoWay}" x:Name="MyDataPager1" />
还有视图模型:
public int PageSize
{
get { return (int)GetValue(PageSizeProperty); }
set { SetValue(PageSizeProperty, value); }
}
public static readonly DependencyProperty PageSizeProperty =
DependencyProperty.Register("PageSize", typeof(int), typeof(ViewSchedeConsuntiviViewModel), new PropertyMetadata(10));
public MyViewModel()
{
PageIndex = 1;
PageSize = 20;
}
谁能解释一下为什么视图模型和用户控件之间的绑定不起作用?
【问题讨论】:
-
PageSourceSize的声明是什么? -
查看代码在我看来,我看到了 2 个 PageSize 属性:一个在 MyViewModel 类中,另一个在 MyDataPager 中。数据绑定值绑定到 MyDataPager 的属性,但在代码的最新行中,您更改了 MyViewModel 的属性。不是吗?
-
@Tigran 我已经更新了我的代码,很抱歉造成混乱。现在应该更清楚了。
-
@Anders 完成了。感谢您的支持。
标签: c# silverlight-4.0 mvvm