【发布时间】:2014-07-06 13:36:45
【问题描述】:
我只是在探索 Windows 手机运行时应用程序模板。但我看到了一件奇怪的事情。
我在 Xaml 中定义了 Button,其中设置了 ContentTemplate。我想提取此按钮的 ContentTemplate 中定义的 Image 控件。但它即将无效。
Xaml 代码 :-
<Button x:Name="PlayButton" Click="PlayButton_OnClick">
<Button.ContentTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Name="Panel">
<Image x:Name="ControlImg"
Width="100"
/>
<TextBlock Text="text block" />
</StackPanel>
</DataTemplate>
</Button.ContentTemplate>
这是按钮点击事件:-
private async void PlayButton_OnClick(object sender, RoutedEventArgs e)
{
var btn = sender as Button;
var ct = btn.ContentTemplate; // this part is also not showing controls in it when expending ct at runtime.
var img = btn.FindName("ControlImg") as Image; // coming null
var stckpnl = btn.FindName("Panel") as StackPanel;// coming null
}
谁能看看为什么会这样?
编辑 :- 我已经解决了我的问题并达到了这个最简单的水平,看到这个之后我就是不明白为什么会这样?
【问题讨论】:
-
您不会在基于 XAML 的技术中“提取” UI。您使用正确的 XAML 和 DataBinding 而不是过程代码。我不知道你想要实现什么,但你应该使用正确的 DataBinding 而不是过程代码。见MSDN
-
@HighCore 这是最简单的示例项目,应该可以工作,实际上数据绑定也存在问题。这是问题的次要部分,不工作这让我发疯。
-
为什么需要控件?你不能从绑定的对象中得到什么?
-
@KenTucker 是我使用 c# 以编程方式做的事情是错误的。它应该工作与否。对我来说,它不起作用很奇怪。
-
不,您将无法在数据模板中找到控件。你想做什么
标签: c# xaml windows-phone-8 windows-runtime windows-phone-8.1