0

我有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> 
4

1 回答 1

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>
于 2013-10-08T11:03:51.543 回答