2013-01-02 205 views
3

我很新的WPF和我有困難結合請求對象,具有將其從WSDL衍生於XAML文本框嵌套對象。以編程方式我能夠綁定到一個文本框,但我想了解通過XAML綁定所需的語法。一旦我有了方向,它將使研究一個完整的解決方案變得更容易。謝謝WPF綁定嵌套對象

結果集和消息對象將始終爲[0]。

代碼
MainWindow() 
{ 
    InitializeComponent(); 
    GetMarketingMessagesResponse request = new GetMarketingMessagesResponse(); 
    request = (GetMarketingMessagesResponse)XMLSerializerHelper.Load(request, @"C:\SSAResponse.xml"); 
    DataContext = request; 
    Binding bind = new Binding(); 
    bind.Source = request.ResultSet[0].Message[0]; 
    bind.Path = new PropertyPath("SubjectName"); 
    this.txtbSubject.SetBinding(TextBox.TextProperty, bind); 
} 

在Visual Studio觀看返回值bind.Source = request.ResultSet [0] .Message [0]; 是 bind.Source = {GetMarketingMessagesResponseResultSetMessage}這是類名。

XAML

我如何綁定到該類尋找方向和內部

<TextBox Name="txtbMessageDetails" HorizontalAlignment="Right" Margin="0,50.08,8,0" TextWrapping="Wrap" Text="{Binding Source=ResultSet[0].Message[0], Path=SubjectName}" VerticalAlignment="Top" Height="87.96" Width="287.942"/> 

回答

1

使用性能converter將接收請求並提取信息。

<Window.Resources> 
    <local:MessageExtractorConverter x:Key="messageExtractorConverter" /> 
</Window.Resources> 


<TextBox Name="txtbMessageDetails" HorizontalAlignment="Right" Margin="0,50.08,8,0" TextWrapping="Wrap" Text="{Binding Converter={StaticResource messageExtractorConverter}" VerticalAlignment="Top" Height="87.96" Width="287.942"/> 

轉換器實現:

public class MessageExtractorConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     var val = value as GetMarketingMessagesResponse; 
     if (val != null) 
     { 
      // You can modify this code to extract whatever you want... 
      return val.ResultSet[0].Message[0]; 
     } 
     else 
     { 
      return null; 
     } 
    } 
1

你已經把要求對象在你的DataContext,使其成爲所有綁定的默認來源。因此,而不是指定其他來源(這只是覆蓋的DataContext),使用結合的道路,以自己的方式,從在DataContext你所需要的屬性:

<TextBox Name="txtbMessageDetails" Text="{Binding Path=ResultSet[0].Message[0].SubjectName}" /> 

下面是一篇文章,解釋如何在DataContext工作,以及它如何從控制中「繼承」到控制窗口中:http://www.codeproject.com/Articles/321899/DataContext-in-WPF