2010-07-14 51 views
0

我定义的域范围内的用户资源绑定的Silverlight ccontrol文本框域范围内定义为静态资源

<UserControl.Resources> 
    <my:ParkDomainContext x:Key="parkDomainContext" /> 
</UserControl.Resources> 

我都一定到表查询结果到该域方面在我后面的代码

_parkDomainContext = this.Resources["parkDomainContext"] as ParkDomainContext; 
_parkDomainContext.Load(_parkDomainContext.GetLocationsQuery(), LoadLocationComplete, null); 
_parkDomainContext.Load(_parkDomainContext.GetParksQuery(), LoadParkComplete, null); 

这之后我已经界定的静态域范围内的组合框如下

<ComboBox x:Name="cboLocation" Grid.Column="1" Grid.Row="1" 
      ItemsSource="{Binding Path=Locations, Source={StaticResource parkDomainContext}}" 
      SelectedItem="{Binding Path=Locations, Mode=TwoWay}" 
      DisplayMemberPath="ParkLocation" 
    /> 

它的正常工作,但是当我同一个域上下文绑定到一个文本框,如下所示:

<TextBox Grid.Column="1" Grid.Row="0" Height="23" HorizontalAlignment="Left" Margin="3" Name="locationIDTextBox" 
     VerticalAlignment="Center" Width="120" 
     Text="{Binding Source={StaticResource parkDomainContext}, Path=Locations.ParkLocation}" > 

它不显示我的任何结果。

我知道我的域上下文具有查询结果,并且在将其绑定到文本框时一定有问题。

请让我知道解决的办法..

回答

0

你需要有一个地方持有可变的当前位置和文本框绑定到它。相反,你现在拥有的是将ComboBox.SelectedItem绑定到位置列表(这将不起作用)。

OP评论后编辑: 加入<UserControl.Resources>

<my:Location x:Key="currentLocation" /> 

然后改变组合框:

SelectedItem="{Binding Source={StaticResource currentLocation}, Mode=TwoWay}" 

然后文本框:

Text={Binding Source={StaticResource currentLocation}, Mode=TwoWay}" 

注:

  1. 请更改类型名称和命名空间 您的实际 型
  2. 位置。这是不是真的做的东西的 推荐的方式。 通常,您有一个为您的XAML 设置了 必需属性的类,并将您的 UserControl(或Window)的DataContext设置为此类的 实例。
+0

雅,我感觉一样。但是如何? – user347755 2010-07-14 11:25:36