【问题标题】:Dynamically Load Content and Set Binding动态加载内容并设置绑定
【发布时间】: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


【解决方案1】:

我建议下载 Snoop 之类的内容,以查看运行时实际的 DataContext 是什么

【讨论】:

  • 我已经下载了它并检查了 DataContext ,它帮助我弄清楚当控件实际显示时它是空的。谢谢你的好建议!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
相关资源
最近更新 更多