代码之家  ›  专栏  ›  技术社区  ›  Mark

基于ItemsSource(WPF)中的值更改数据网格中组合框的内容

wpf
  •  0
  • Mark  · 技术社区  · 16 年前

        <my:DataGrid AutoGenerateColumns="False" Margin="30,20,130,77" Name="dataGrid1">
            <my:DataGrid.Columns>
                <my:DataGridTemplateColumn Header="Title" MinWidth="100">
                    <my:DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <DataTemplate.Triggers>
                                <DataTrigger Binding="{Binding Path = Sex}" Value ="F">
                                    <Setter Property="ComboBox.ItemsSource" Value="{StaticResource Titles2}" />
                                </DataTrigger>
                            </DataTemplate.Triggers>
                            <ComboBox ItemsSource="{StaticResource Titles}" 
                                      SelectedItem="{Binding Title}" />
                        </DataTemplate>
                    </my:DataGridTemplateColumn.CellEditingTemplate>
                    <my:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Title}" />
                        </DataTemplate>
                    </my:DataGridTemplateColumn.CellTemplate>
                </my:DataGridTemplateColumn>
    

    谢谢你的帮助!!

    1 回复  |  直到 16 年前
        1
  •  3
  •   Quartermeister    16 年前

    问题是触发器是在ContentPresenter上设置属性,而不是在ComboBox上。当你写作的时候 Property="ComboBox.ItemsSource" ,您正在限定要设置的依赖项属性,但它仍然是在ContentPresenter上设置的,并且不是由组合框继承的。您可以在组合框上设置属性,方法是为其指定Name属性并在Setter上设置TargetName:

    <DataTemplate>
        <ComboBox ItemsSource="{StaticResource Titles}" 
                  Name="myComboBox"
                  SelectedItem="{Binding Title}" />
        <DataTemplate.Triggers>
            <DataTrigger Binding="{Binding Path = Sex}" Value ="F">
                <Setter TargetName="myComboBox" Property="ItemsSource"
                        Value="{StaticResource Titles2}" />
            </DataTrigger>
        </DataTemplate.Triggers>
    </DataTemplate>