2013-01-02 160 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