내가 만든 일부 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>
답변 인 XAML을로드하고 방법입니다 그것은 당신의 도움에 대한 감사합니다 경로 지정 문제였다. 런타임에로드 된 XAML에서 XmlDataProvider 및 다른 Object Data Sources를 바인딩 할 수 있습니다. 엄청난 시간 절약. 블렌드 및 어둠 속에서 UI를 만들어 바인딩하십시오.
출력 창에 오류 메시지가 있습니까? Canvas의 DataContext가 설정되어 있습니까? – JustABill
제목 ("C# WPF") –
에 태그를 반복하지 마십시오. 오류 메시지가 나타나지 않고 TextBlock에 아무 것도 나타나지 않습니다. 나는 두 가지 제안을하고 오늘 시도해보고 내가 문제를 찾도록 도와 준다면 다시 게시 할 것이다. – discorax