WPF将子控件绑定到父控件

时间:2011-06-06 17:47:20

标签: wpf data-binding

我正在尝试执行数据绑定,给出以下情况:

我有一个名为“Node”的类,它有两个属性:“speed”和“pauseTime”。然后我有一个节点数组。

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

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

我尝试使用Google搜索,但不确定要使用哪些搜索字词。

1 个答案:

答案 0 :(得分:0)

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

在XAML中,你有一个带有ListView(主)的Grid,以及一个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绑定到Selected节点的Speed属性。如果将IsSynchronizedWithCurrentItem =“True”添加到ListView,则在加载窗口时将自动选择第一个项目。如果您掌握Google主要详情/ WPF和IsSynchronizedWithCurrentItem =“True”,您会找到更多详细信息。

对于Google如何使用MVVM执行此操作可能也很有用 - this Stackoverflow Answer中提到了一种合理的方法。