积极答复者
SilverLight绑定问题

问题
-
请问对SilverLight的Datacontext进行绑定是不是有问题啊?
在SilverLight项目中,我新建了一个SilverLight用户控件,然后在MainPage中去直接调用这个控件的时候,在这个控件的Loaded事件中对Datacontext进行绑定,得到的结果是正确的,修改页面上的数据也会对数据源进行更新
<controls:ucNewUserControl/>
但是如果使用一个Frame来导航到这个控件上时,Datacontext的绑定却是不对的,在页面上显示的数据根本不是绑上去的数据,而且修改页面上的数据对绑上去的数据源完全是没有任何更新的- 已移动 mldark 2010年2月1日 14:28 (发件人:Visual C#)
答案
-
兄弟!!
改为this.DataContext=factory;你试试就可以了!
努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!- 已标记为答案 天使坠Moderator 2011年3月16日 11:51
全部回复
-
用户控件代码:
<UserControl xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" x:Class="UserControls.ucNewFactory" Loaded="UserControl_Loaded">
<controls:TabControl x:Name="tcMain">
<controls:TabItem x:Name="tiNewFactory">
<Grid>
<StackPanel Grid.Row="1">
<TextBox Name="tbFactoryCode" Text="{Binding FactoryCode, Mode=Twoway}" />
</StackPanel>
</Grid>
</controls:TabItem>
</controls:TabControl>
</UserControl>
后台代码:
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
Base_Factory factory = new Base_Factory();
factory.FactoryCode = "Factory";
tiNewFactory.DataContext = factory;
}
在MainPage中直接调用<controls:ucNewFactory/>时可以正常的对factory的值显示与更新,
但是使用Frame控件<navigation:Frame Name="navFrame"/>,在页面后台代码导航
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
//navFrame.Navigate(new Uri("/UserControls/ucNewFactory.xaml", UriKind.Relative));
navFrame.Source = (new Uri("/UserControls/ucNewFactory.xaml", UriKind.Relative));
}
}
用以上两种方式导航在页面上都不显示factory的值,修改tbFactoryCode的值对数据源也不会更新。。。
<TextBox Name="tbFactoryCode" Text="{Binding FactoryCode, Mode=Twoway}" />
奇怪的是这里的Text命名已经绑定了FactoryCode,调试跟踪下发现tbFactoryCode.Text也确实变成了我输入的值,
但是tiNewFactory.DataContext里面的FactoryCode却仍然是最初的"Factory"没有更新。。。
使用<controls:ucNewFactory/>调用则没有任何问题tbFactoryCode.Text改变会更新tiNewFactory.DataContext。。。 -
兄弟!!
改为this.DataContext=factory;你试试就可以了!
努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!- 已标记为答案 天使坠Moderator 2011年3月16日 11:51