WPF:区分项目控制中的项目

vybvopom  于 2023-02-16  发布在  其他
关注(0)|答案(1)|浏览(142)

我使用相同的ItemsControl来显示多个组合框。例如,根据绑定到ItemsControl的项目列表,使用相同的模板来显示有时带有一些名称的组合框,有时带有一些名字的组合框。
在模板中,ComboBox的SelectedValue只绑定到一个名为“ReceivedCBValue”的属性。所以,有时候,选定的值会给我名字,有时候会给我名字。但是我怎么知道我得到的是名字还是名字呢?
在另一种方式,我有同样的问题与文本框:相同的模板用于显示有时接收名字的文本框,有时接收名字的文本框。2同样,模板中的文本框仅绑定到一个属性“receivedTextValue”。
我同时显示我的几个文本框,当我在其中一个文本框中键入一些文本时,其他文本框显示我刚刚键入的文本。最后,我有多个文本框具有相同的值。绝对无用。

<ItemsControl Background="BurlyWood" Margin="20" Name="IcChoice"
                  ItemsSource="{Binding Items, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Width="350"
                  Height="200" 
                  Tag="{Binding Tag, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"                      
                  >
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid Margin="5" Background="Brown"
                      Visibility="{Binding Visible, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                      >
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>

              
                    <!-- ComboBox Source is bound to the Children List, whereas its selectedValue is bound to ReceivedCBValue on the main DataContext ( Hello), so to the ViewModel -->
                    <ComboBox Grid.Column="0"
                              ItemsSource="{Binding Children}"
                              Visibility="{Binding ComboBoxVisibility}"
                              SelectedValue="{Binding DataContext.ReceivedCBValue, ElementName=Hello, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                              Grid.Row="1" />
                    <ComboBox Grid.Column="0"
                              ItemsSource=""></ComboBox>
                    
                    <TextBox
                        Text="{Binding DataContext.ReceivedText,
                        ElementName=Hello,
                        UpdateSourceTrigger=PropertyChanged,
                        Mode=TwoWay}"                           
                        Grid.Row="1" />
63lcw9qa

63lcw9qa1#

我想我明白我错在哪里了,为什么。我使用那些ItemsControl和它们的内容来对List应用过滤器(或者ObservableCollection),在我理解之前,我想“直接”使用输入的值应用filter(这就是为什么我想在视图模型中获取值(typedValue-〉ViewModel.ReceivedValue-〉applyFilter(ViewModel.ReceivedValue);)。现在,我知道我必须在DisplayedIteml对象的属性中设置所有值,将这个对象发送到我的viewModel(或类似的东西),并对该对象的值应用我的过滤器。

相关问题