2010-07-14 35 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