在父子用户控件之间传递数据

时间:2012-10-19 13:56:46

标签: c# silverlight-4.0 user-controls

假设我有一个 Book app ,其安排如下: 有几种页面类型

  • 带图片

  • 只有图片

  • 等...

每个页面都可以有很多书签。为了正确显示所有内容,我创建了一个像这样的

数据模板选择器

Page.xaml

 <Pages:PageTypeSelector Content="{Binding}">
    <Pages:PageTypeSelector.Regular>
       <DataTemplate>
           <Grid HorizontalAlignment="Stretch">  
                <!-- Show regular content here-->
                <Bookmark:BookmarkView />
           </Grid>
        </DataTemplate>
    </Pages:PageTypeSelector.Regular>

    <Pages:PageTypeSelector.WithPicture>
       <DataTemplate>
           <Grid HorizontalAlignment="Stretch">  
                <!-- Show mixed content here-->
                <Bookmark:BookmarkView />
           </Grid>
        </DataTemplate>
    </Pages:PageTypeSelector.WithPicture>

   <Pages:PageTypeSelector.OnlyPicture>
       <DataTemplate>
           <Grid HorizontalAlignment="Stretch">  
                <!-- Show picture content here-->
                <Bookmark:BookmarkView />
           </Grid>
        </DataTemplate>
    </Pages:PageTypeSelector.WithPicture>
 </Pages:PageTypeSelector>

书签视图的外观现在并不重要(它只显示每个页面的书签)

问题是我需要以某种方式设置它的PageId属性,以便书签控件可以从服务中获取书签。

我已在BookmarkView.xmal.cs

添加了一个属性
public Guid PageId
{
    get { return _pageId; }
    set
    {
        _pageId= value;
        _viewModel.PageId= value; // Here I wanted to pass the same value to the 
                                  // viewModel which would doo the job then
    }
}

然后我尝试做这样的事情

<Bookmark:BookmarkView PageId={Binding PageId, Mode=TwoWay}/>

Intellisense在我打字时建议使用PageId但没有发生任何事情。

如何将PageId传递给视图?

编辑:更改为

public object PageId
{
    get { return _pageId; }
    set
    {
        _pageId= value;
    }
}

告诉我value的类型为System.Windows.Data.Binding。我现在怎样才能获得价值?

1 个答案:

答案 0 :(得分:1)

为PageID创建依赖项属性。