绑定到视图模型,位于ItemsControl模板中的控件

时间:2018-04-17 12:33:31

标签: wpf data-binding datatemplate

耶,

也许这是一个简单的问题,但我坚持这个问题所以我需要你的帮助。

我在ItemsControl中的ItemsControl.ItemTemplate中的DataTemplate中有一个TextBox,我希望在我的一个ViewModel属性中发送键入的值。

ItemsControl 
|ItemsControl.ItemTemplate 
||Datatemplate 
|||Grid 
||||textBox --> Value == > MyViewModel

目前,我有一个“DisplayedItems”列表,绑定到ItemsControl的“ItemsSource”属性,填充ItemsControl,我得到的值由列表中的一个DisplayedItem接收,不幸的是留在那里。我绝对不知道如何从ViewModel类中获取它或使用它。

||||textBox --> Value --> DisplayedItem --?-->ViewModelClass

<ItemsControl Name="IcChoice" ItemsSource="{Binding Items, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Width="350" Height="150" >
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid Visibility="{Binding Visible, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="*"/>

                    </Grid.RowDefinitions>
                    <TextBlock Text="{Binding Title}" Grid.Row="0"/>
                    <ComboBox ItemsSource="{Binding Children}" Visibility="{Binding ComboBoxVisibility}" Grid.Row="1"/>
                    <TextBox Text="{Binding HelloWorldViewModel.ReceivedText, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Visibility="{Binding TextBoxVisibility}" Grid.Row="1">

                    </TextBox>
                </Grid>
            </DataTemplate>

        </ItemsControl.ItemTemplate>
    </ItemsControl>

我可以得到一些帮助吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

我需要为封装的控件定义一个特定的数据上下文:

  <TextBox   
                        Text="{Binding DataContext.ReceivedText, 
                        ElementName=Hello,  
                        UpdateSourceTrigger=PropertyChanged, 
                        Mode=TwoWay}" 
                        Visibility="{Binding TextBoxVisibility}" 
                        Grid.Row="1"/>

如果“Hello”是我的视图的名称(它与viewModel建立链接)