Я загружаю некоторые созданные мной страницы XAML, в которых есть привязка данных. Однако, когда я загружаю эти файлы XAML во время выполнения, их привязка данных больше не работает. Мне интересно, если это какая-то проблема с областью действия или путем или вы просто не можете это сделать.
Вот как я загружаю XAML
using (XmlReader rdr = XmlReader.Create(@".\TwitterModule\TwitterModule.xaml"))
{
Canvas twitter = XamlReader.Load(rdr) as Canvas;
contentRoot.Children.Add(twitter);
}
А вот и мой последний XAML
<!--XAML -->
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:LocalTrendsDS="clr-namespace:LocalTrendsDS;assembly=LocalTrendsDS" />
<Canvas.Resources>
<XmlDataProvider x:Key="TweetCounter" Source="..\temp\TweetCounter.xml" />
<LocalTrendsDS:LocalTrends x:Key="LocalTrendsDataSource" />
</Canvas.Resources>
<Canvas x:Name="root" Height="479" Width="877"
DataContext="{Binding Source={StaticResource TweetCounter}}">
<TextBlock x:Name="Number"
Canvas.Left="86.744" LineHeight="122.919" TextAlignment="Right" TextWrapping="Wrap" Width="425.372"
Text="{Binding Mode=OneWay, XPath=/Count}" />
</Canvas>
<Canvas x:Name="_3a" Height="383" Canvas.Left="1971" Canvas.Top="107" Width="362"
DataContext="{Binding Source={StaticResource LocalTrendsDataSource}}">
<TextBlock x:Name="TrendList" FontSize="16.449" Canvas.Left="-0.806" LineHeight="16.449" TextAlignment="Left" TextWrapping="Wrap" Canvas.Top="112.155" Height="127.829"><TextBlock.RenderTransform>
<MatrixTransform Matrix="2.334,0,0,2.334,0,0"/>
</TextBlock.RenderTransform>
<Run Foreground="#FF9900EB" FontFamily="Hiruko Alternate" Text="1. "/>
<TextBlock Foreground="#FFFFFFFF" FontFamily="Segoe Semibold" Text="{Binding CurrentLocalTrends[0].Value, Mode=Default}"/><LineBreak/>
<Run Foreground="#FFDB0072" FontFamily="Hiruko Alternate" Text="2. "/>
<TextBlock Foreground="#FFFFFFFF" FontFamily="Segoe Semibold" Text="{Binding CurrentLocalTrends[1].Value, Mode=Default}"/><LineBreak/>
<Run Foreground="#FFFF0F1B" FontFamily="Hiruko Alternate" Text="3. "/>
<TextBlock Foreground="#FFFFFFFF" FontFamily="Segoe Semibold" Text="{Binding CurrentLocalTrends[2].Value, Mode=Default}"/><LineBreak/>
<Run Foreground="#FFFF6E05" FontFamily="Hiruko Alternate" Text="4. "/>
<TextBlock Foreground="#FFFFFFFF" FontFamily="Segoe Semibold" Text="{Binding CurrentLocalTrends[3].Value, Mode=Default}"/><LineBreak/>
<Run Foreground="#FFFF9F01" FontFamily="Hiruko Alternate" Text="5. "/>
<TextBlock Foreground="#FFFFFFFF" FontFamily="Segoe Semibold" Text="{Binding CurrentLocalTrends[4].Value, Mode=Default}"/><LineBreak/>
</TextBlock>
</Canvas>
</Canvas>
ОТВЕТ: Это была проблема пути, спасибо за вашу помощь. Я могу связать как XmlDataProvider, так и другие источники данных объектов в XAML, загруженные во время выполнения. Огромная экономия времени. Создайте пользовательский интерфейс в Blend и в темноте связывайте их.