1
我在Silverlight中有一個自定義的基本用戶控件。如何在silverlight中訪問派生用戶控件的指定元素?
<UserControl x:Class="Problemo.MyBaseControl"
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"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<Border Name="HeaderControl" Background="Red" />
</Grid>
</UserControl>
隨着後面
public partial class MyBaseControl : UserControl
{
public UIElement Header { get; set; }
public MyBaseControl()
{
InitializeComponent();
Loaded += MyBaseControl_Loaded;
}
void MyBaseControl_Loaded(object sender, RoutedEventArgs e)
{
HeaderControl.Child = Header;
}
}
以下代碼我有一個導出的控制。
<me:MyBaseControl x:Class="Problemo.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"
xmlns:me="clr-namespace:Problemo"
d:DesignHeight="300" d:DesignWidth="400">
<me:MyBaseControl.Header>
<TextBlock Name="header" Text="{Binding Text}" />
</me:MyBaseControl.Header>
</me:MyBaseControl>
後面的代碼在後面。
public partial class MyControl : MyBaseControl
{
public string Text
{
get; set;
}
public MyControl(string text)
{
InitializeComponent();
Text = text;
}
}
我試圖在派生控件中設置標題文本塊的文本值。
能夠設置兩種方式,即使用數據綁定或後面的派生控制代碼,但都不能工作,這將是很好的。通過數據綁定,它不起作用。如果我在後面的代碼中嘗試,我得到'頭'的空引用。這是Silverlight 4中(不知道是否有差別)
如何做到與這兩個數據綁定和代碼有什麼建議?
乾杯
Thanks.The基類是模板(其幾乎是一個窗口,該窗口具有一個標題,內容,最小化/最大化)如果我更改基本控制在這個例子中是一個模板控制,代碼失敗,headerItem被空。有關使它2與模板化基本控件一起工作的任何建議? 公共類MyBaseControl:控制{ 公共的UIElement部首{獲得;設置;} 公共MyBaseControl(){DefaultStyleKey = typeof運算(MyBaseControl);} 公共覆蓋無效OnApplyTemplate(){ base.OnApplyTemplate(); var headerControl = GetTemplateChild(「HeaderControl」)as Border; if(headerControl!= null)headerControl.Child = Header; }} – Mrt 2010-04-12 13:33:38
@Mrt:我並不是建議你應該使用模板控件,只是可能值得考慮。現在你已經揭示了更多關於你在做什麼,是否有任何理由不使用內置的ChildWindow類?順便說一句,代碼不會在註釋中進行格式化,如果您想要在模板化控制方法中發佈另一個問題。 – AnthonyWJones 2010-04-13 06:16:03
已發佈新問題。 http://stackoverflow.com/questions/2627410/how-to-access-a-named-element-in-a-control-that-inherits-from-a-templated-control – Mrt 2010-04-13 07:11:31