2011-06-06 126 views
0

我试图进行绑定,给下面的情况:WPF绑定子控件的父控件

我有一个名为“节点”,它有两个属性的类:“速度”和“pauseTime”。然后我有一个节点阵列。

在我的XAML中,我有一个数字控件(标记为Node),它允许用户在节点之间切换。还有两个子控件,我希望显示所选节点的速度和pauseTime。

我的问题是如何设置速度的数据绑定,例如,以便它显示节点数组控件中的值在Nodes数组中选定的节点的速度?

我试着用google搜索这个,但不确定要使用什么搜索条件。

回答

0

我不确定数字控制是什么意思,但我敲了一个主控细节控制场景的例子。

在你有一个ListView(主)网格的XAML和一个TextBlock(详细信息):

<Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 
     <ListView ItemsSource="{Binding}" x:Name="masterListView"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Name}" /> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 
     <TextBlock Grid.Row="1" Text="{Binding ElementName=masterListView, Path=SelectedItem.Speed}" /> 
    </Grid> 

后面的代码看起来是这样的:

public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      DataContext = new Node[] 
      { 
       new Node() { Speed = 1, PauseTime = "1 Min", Name = "Item 1" }, 
       new Node() { Speed = 2, PauseTime = "2 Mins" , Name = "Item 2" } 
      }; 
     } 
    } 

    public class Node 
    { 
     public int Speed { get; set; } 

     public string PauseTime { get; set; } 

     public string Name { get; set; } 
    } 

孩子TextBlock绑定到所选节点的Speed属性。如果将IsSynchronizedWithCurrentItem =“True”添加到ListView中,则在窗口加载时将自动选择第一项。如果您的Google主控台详情/ WPF和IsSynchronizedWithCurrentItem =“True”,您会发现更多详情。

对于Google来说,如何使用MVVM来做到这一点可能也很有用 - 在this Stackoverflow Answer中提到了一个合理的方法。

+0

对不起,一个数字控件基本上只是一个文本格式,仅用于数字。我不认为我可以使用上面阐述的方法,因为ListView有一个ItemsSource属性。但我想通过从数字控件(文本框)中的数字中获取数组索引来根据数组填充子控件。那有意义吗? – jessejuicer 2011-06-06 18:21:33