我正在为列表框中的项目创建一个datatemplate并使用它来加载它
(DataTemplate)XamlReader.Load(template)
,其中模板为
string template = String.Concat(@
"<DataTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
<Border BorderBrush='#334873' BorderThickness='1,1,1,1' Width='450'>
<TextBox Height='72' HorizontalAlignment='Left' Margin='10,10,0,0' TextChanged="OnTextChanged" VerticalAlignment="Top" Width="460" />"
...................
"</Border></DataTemplate>");
由于注册了“OnTextChanged”事件,我收到了错误。
我想在模板代码中注册一个事件。
怎么做?
答案 0 :(得分:1)
为了给你答案:当你使用模板时,以这种方式映射事件相当困难,因为模板不会知道它放在哪里。所以OnTextChanged
在这种情况下并不意味着什么。
您应该考虑绑定。当您已经使用DataTemplate时,通常的故事是将TextBox-Text属性绑定到某个模型属性
<TextBox Height='72' HorizontalAlignment='Left' Margin='10,10,0,0' Text="{Binding MyTextProperty}" VerticalAlignment="Top" Width="460" />"
当然这里的DataContext应该有一个属性MyTextProperty
,但没有你的代码(你使用模板的地方)我不能给出进一步的细节。