如何将组合框中的选定项绑定到datagrid中的文本块

时间:2013-10-08 10:22:52

标签: wpf

我在数据网格内部有combobox,它位于单元格编辑模板中。

我想要的是当用户从combobox中选择一个项目并移动到下一个单元格时,所选项目必须绑定到同一个单元格的textblock

如果有人知道如何帮助我。这是我的xaml

<DataGrid AutoGenerateColumns="False" VirtualizingStackPanel.IsVirtualizing="False"
          Grid.Row="1" Grid.ColumnSpan="7" Name="attendancegrid" Background="#FFDCE8EB" CanUserAddRows="False" 
          BorderBrush="Chocolate" BorderThickness="5" RowHeight="30" IsSynchronizedWithCurrentItem="True"
          HorizontalGridLinesBrush="#FFB74646" IsReadOnly="False" Foreground="Black" Loaded="attendancegrid_Loaded"
          SelectionChanged="attendancegrid_SelectionChanged" CurrentCellChanged="attendancegrid_CurrentCellChanged"
          CellEditEnding="attendancegrid_CellEditEnding">

    <DataGridTemplateColumn Header="Monday" Width="100">
        <DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <ComboBox x:Name="monday" Width="50"   IsSynchronizedWithCurrentItem="true"   Loaded="monday_Loaded" SelectionChanged="monday_SelectionChanged"></ComboBox>
                    <ComboBox x:Name="staff" Width="50" Loaded="staff_Loaded"></ComboBox>
                </StackPanel>
            </DataTemplate>
        </DataGridTemplateColumn.CellEditingTemplate>
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <StackPanel >
                    <TextBlock x:Name="mon"></TextBlock>
                </StackPanel>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid> 

1 个答案:

答案 0 :(得分:1)

您必须创建一个要在Combobox上绑定的集合属性,如

public List<string> MyCollection{get;set;}

和一个字符串属性,用于将其绑定到ComboBox的SelectedItem和TextBlock,如

private string _SelectedCollectionItem;

public string SelectedCollectionItem
{
    get{return _SelectedCollectionItem;}
    set{_SelectedCollectionItem=value;
    RaisePropertyChanged("SelectedCollectionItem");}
}

现在你的xaml就像这样

DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <ComboBox ItemsSource="{Binding MyCollection}" SelectedItem={Binding SelectedCollectionItem,Mode=TwoWay}></ComboBox>
            </StackPanel>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <StackPanel >
                <TextBlock Text={Binding SelectedCollectionItem}></TextBlock>
            </StackPanel>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>