WPF绑定子控件的父控件
问题描述:
我试图进行绑定,给下面的情况:WPF绑定子控件的父控件
我有一个名为“节点”,它有两个属性的类:“速度”和“pauseTime”。然后我有一个节点阵列。
在我的XAML中,我有一个数字控件(标记为Node),它允许用户在节点之间切换。还有两个子控件,我希望显示所选节点的速度和pauseTime。
我的问题是如何设置速度的数据绑定,例如,以便它显示节点数组控件中的值在Nodes数组中选定的节点的速度?
我试着用google搜索这个,但不确定要使用什么搜索条件。
答
我不确定数字控制是什么意思,但我敲了一个主控细节控制场景的例子。
在你有一个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中提到了一个合理的方法。
对不起,一个数字控件基本上只是一个文本格式,仅用于数字。我不认为我可以使用上面阐述的方法,因为ListView有一个ItemsSource属性。但我想通过从数字控件(文本框)中的数字中获取数组索引来根据数组填充子控件。那有意义吗? – jessejuicer 2011-06-06 18:21:33