2011-06-06 157 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