天天看點

windowsphone7資料綁定的一種用法

假如我們自定義了一個UserControl,我們可能需要定義一些這個使用者控件特有的依賴屬性。

但有些時候,我們可能想直接複用父控件的依賴屬性;比如有個控件叫MyControl, 裡面的根容器為LayoutRoot。在xaml中我想這麼定義它: <uc:MyControl Background="White"/>,然後LayoutRoot的背景也被指派為White。

一種實作的方法是重新定義了Background這個依賴屬性,以覆寫原有的Background屬性,同時注冊PropertyChanged事件,在觸發該事件的時候将背景的值指派給LayoutRoot。

另一種方法則更加簡單,直接讓LayoutRoot通過綁定ElementName來綁定MyControl的Background的值來實作背景的改變。

實作的代碼如下:

<UserControl x:Class="TestProject.Controls.MyControl"
    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"
    mc:Ignorable="d"
    Background="Black"
    x:Name="ParentCTL">

    <Grid x:Name="LayoutRoot" Background="{Binding Background,ElementName=ParentCTL}"/>
	
</UserControl>
           

我們可以這樣來使用它:

<uc:MyControl x:Name="myControl" Background="White"/>
           

如果我們隻是定義了MyControl,但是沒有定義Background的值,那麼它将使用預設值(這個例子的預設值為Black,如代碼所示)。

繼續閱讀