【发布时间】:2011-11-08 13:16:37
【问题描述】:
我有一个向导控件,它将根据从其中一个屏幕中选择的设备生成其他向导页面。设置其他设备后,向导将为这些设备添加创建新向导页面。
我有一个实例化的用户控件“SDContentTemplate”,内容控件的内容由传递给构造函数的对象设置。该对象是从 XML 数据源 (CDATA) 加载的 XAML。
<Section Order="1" RepeatPerDevice="true" Title="Report Data">
<![CDATA[<DockPanel xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' xmlns:tk="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit">
<Border DockPanel.Dock="Top" BorderBrush="Black" BorderThickness="1" Width="170" HorizontalAlignment="Left">
<StackPanel>
<TextBlock Margin="0 0 0 16" TextAlignment="Center">Device X of Y</TextBlock>
<WrapPanel>
<TextBlock MinWidth="80" Padding="4 2">Manufacturer:</TextBlock>
<TextBlock MinWidth="80" Padding="4 2" Text="{Binding Path=SDDevice.Manufacturer}"></TextBlock>
</WrapPanel>
<WrapPanel>
<TextBlock MinWidth="80" Padding="4 2 4 6">Serial Number:</TextBlock>
<TextBlock MinWidth="80" Padding="4 2 4 6" Text="{Binding Path=SerialNumber}"></TextBlock>
</WrapPanel>
</StackPanel>
</Border>
</DockPanel>]]>
</Section>
SDContentTemplate 控件有一个公共对象 Device,它由创建这个新用户控件的代码设置,我在实例化它时设置该对象。
内容 xaml 已全部加载,除了数据绑定不工作外,所有内容均正确显示。文本块中没有显示任何数据。我尝试设置“ContentControl”的数据上下文以及设置“SDContentTemplate”的数据上下文,但我无法弄清楚如何正确设置数据上下文,以便用数据值填充文本块.
关于我做错了什么有什么建议吗?我错了,这是不可能的吗?
谢谢!
【问题讨论】:
-
我会尝试设置 ItemsSource 属性,但这只是一个范围。您可以附加一个直通转换器,以便查看它是否达到那么远以及是否抛出任何错误。
-
我基本上是错误地设置了数据上下文。在我更改了内容模板的数据上下文后,我能够让它工作。我想我有一个轻微的操作顺序问题。感谢 Snoop 的建议,我绝对喜欢这个工具。我将其标记为答案,因为它帮助我立即找到解决方案。
标签: wpf data-binding dynamic-content