设置选择value unn.'t update combobox

Simsen.vejle.

活跃的成员
加入
2月14日,2021年
消息
31
编程经验
Beginner
你好,
我有问题的问题让角色框架工作。

我有一个包含ListView和一些控件的UserControl。当不使用ComboBox时,一切都适用。每次单击列表查看中的一行,它应该在控件中显示(文本框,标签等)。

ListView中的列表为类别,此处我有一个ProjectID的键和ProjectName的密钥。在CategoryViewModel中,我已经选择了一个属性选择的类别。根本没有问题

它工作正常,除非我无法更新组合框。

ComboBox我占据了项目列表的项目。现在我想用ComboBox将ListView(LivCategories)绑定,因此在选择AF类别时,它会向我显示该特定类别的ComboBox中的项目。我也想要它,如果没有任何针对特定类别的项目,它应该将ComboBox空白(或在这里显示的东西没有项目)

我通过将projects_getactive绑定到ComboBox(Whitch已成功)来获取项目。

您可以在我的代码中看到,我制作了2个TextBoxes,带有ProjectID和ProjectName。每次在列表视图中选择一个新行时,这两个更新。所以我有正确的选择性。我不知道如何更新ComboBox。

如果你错过了一些代码,请告诉我 - 我根本没有任何秘密部分。

最好的祝福
Simsen. :)


我的两个文字盒和赢得的组合框't work:
<ComboBox x:Name="CbxProject" Text="Projekt" Grid.Row="5" Grid.Column="2" HorizontalContentAlignment="Left"  VerticalContentAlignment="Center"
                                      ItemsSource="{Binding Projects_GetActive}" DisplayMemberPath="ProjectName"
                                      SelectedItem="{Binding ElementName=LivCategories, Path= SelectedValue.ProjectName, Mode=TwoWay,
                                UpdateSourceTrigger=PropertyChanged}" IsSynchronizedWithCurrentItem="True">
                            </ComboBox>

                            <TextBox x:Name="TxtProjectId" Margin="0 0 8 0" Text="{Binding ElementName=LivCategories, Path = SelectedValue.ProjectId, Mode = TwoWay}" Grid.Row="6" Grid.Column="1" Height="25" />
                            <TextBox x:Name="TxtProjectName" Margin="0 0 8 0" Text="{Binding ElementName=LivCategories, Path = SelectedValue.ProjectName, Mode = TwoWay}" Grid.Row="6" Grid.Column="2" Height="25" />

My ListView:
<ListView x:Name="LivCategories" ItemsSource="{Binding Categories_GetActive}" SelectedItem="{Binding SelectedCategory}" Grid.Row="0" Grid.Column="0">
                        <ListView.View>
                            <GridView>
                                <GridViewColumn Header="Id" Width="50" DisplayMemberBinding="{Binding CategoryId}"/>
                                <GridViewColumn Header="Navn" Width="250"  DisplayMemberBinding="{Binding CategoryName}"/>
                                <GridViewColumn Header="Global" Width="50"  DisplayMemberBinding="{Binding CategoryIsGlobal}"/>
                                <GridViewColumn Header="Project" Width="150"  DisplayMemberBinding="{Binding ProjectName}"/>
                                <GridViewColumn Header="ProjectId" Width="0"  DisplayMemberBinding="{Binding ProjectId}" />
                            </GridView>
                        </ListView.View>
                    </ListView>

CateginyViewModel中的选定分类:
private Category _selectedCategory;
        public MyICommand DeleteCommand { get; set; }

        public Category SelectedCategory
        {
            get
            {
                return _selectedCategory;
            }

            set
            {
                _selectedCategory = value;
                OnPropertyChanged("SelectedCategory");
                DeleteCommand.RaiseCanExecuteChanged();
            }
        }

InotifyPropertyChanged IndicinalViewModel中的成员:
#region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        public void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }

        #endregion
 
Solution
啊,所以它看起来您不会通过绑定到列表视图的所选项目而更新组合框中的所选项目。您只是通过绑定到列表视图的所选项目来更新ComboBox中的文本。
你很可能是对的(在这一刻看它看它) - 我已经改变了一点 - 它的工作方式,所以Combox还在更改时更新ListView combobox和两个地方都改变了所选的类别


C#:
<ComboBox x:Name="CbxProject" Grid.Row="5" Grid.Column="2" HorizontalContentAlignment="Left"  VerticalContentAlignment="Center"
                                      ItemsSource="{Binding...

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,833
地点
切萨皮克,va.
编程经验
10+
Why can't you make both the ListView and the ComboBox both bind to the SelectedCategory? Why is the combo box bound to the list view's SelectedItem.ProjectName property. I can how that will work in one direction going from the list view to the combobox, but going the other direction from the combobox to the ListView, how will setting that property cause the list view to change it's currently selected item?
 

Simsen.vejle.

活跃的成员
加入
2月14日,2021年
消息
31
编程经验
Beginner
Why can't you make both the ListView and the ComboBox both bind to the SelectedCategory? Why is the combo box bound to the list view's SelectedItem.ProjectName property. I can how that will work in one direction going from the list view to the combobox, but going the other direction from the combobox to the ListView, how will setting that property cause the list view to change it's currently selected item?
我没有编程多年只是开始再次尝试。所以我不知道的许多人都不知道 - 只是看到它在几个YouTube视频中完成了。

我想要的(不关心如何)是ListView显示所有活动类别。然后我有一些控件,所以当用户在ListView上选择一行时,那么应该在控件(标签,文本框和单个组合框中设置。

在ComboBox I启动Active Projects的UserControl列表中。然后在列表框中选择一行时,如果有一个项目添加到特定类别,则该特定类别项目名称为ProjectName。

我最近首次了解了关于MVVM和在他使用SelectedItem的视频中的一个视频(在我的案例中选择了类别)。所以我可以用listView绑定控件。这适合我的。 SelectedCategory中列表中列表中的category,name等。除了ComboBox之外 - 除了列出活动项目外,不想做任何事情。

所以到你的第一个问题 - 我认为我将ListView和控件(包括ComboBox)绑定到所选的类别 - 我没有,为什么?

为了你的另一个问题。它不必绑定两种方式 - 对我来说,重要的是在列表视图中选择一行时,我可以在两个文本框中显示单个属性(现在正常工作)和ComboBox

如果您有其他问题,请告诉我

最好的祝福
Simsen. :)
 

Simsen.vejle.

活跃的成员
加入
2月14日,2021年
消息
31
编程经验
Beginner
我忘记了2件事;

如果它只是你无法弄清楚,我已经尝试了20-25个不同的建议(谷歌的问题时)但没有成功。这就是为什么我在这里问,因为我只是不知道该怎么做。


Combobox:
<ComboBox x:Name="CbxProject" Text="Projekt" Grid.Row="5" Grid.Column="2" HorizontalContentAlignment="Left"  VerticalContentAlignment="Center"
                                      ItemsSource="{Binding Projects_GetActive}" DisplayMemberPath="ProjectName"
                                      SelectedItem="{Binding ElementName=LivCategories, Path= SelectedValue.ProjectName, Mode=TwoWay,
                                UpdateSourceTrigger=PropertyChanged}" IsSynchronizedWithCurrentItem="True">
                            </ComboBox>

如果我不使用所选的,我不知道如何保存所选(并更改)类别。如果我没有将它们放在例如,我如何从ViewModel获取来自UserControl的更改。财产?
 

Simsen.vejle.

活跃的成员
加入
2月14日,2021年
消息
31
编程经验
Beginner
一个非常好的男人告诉我该怎么办:


C#:
<ComboBox x:Name="CbxProject" Grid.Row="5" Grid.Column="2" HorizontalContentAlignment="Left"  VerticalContentAlignment="Center"
                                      ItemsSource="{Binding Path=Projects_GetActive}" DisplayMemberPath="ProjectName"
                                      Text="{Binding ElementName=LivCategories, Path=SelectedValue.ProjectName}">
                            </ComboBox>
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,833
地点
切萨皮克,va.
编程经验
10+
啊,所以它看起来您不会通过绑定到列表视图的所选项目而更新组合框中的所选项目。您只是通过绑定到列表视图的所选项目来更新ComboBox中的文本。
 

Simsen.vejle.

活跃的成员
加入
2月14日,2021年
消息
31
编程经验
Beginner
啊,所以它看起来您不会通过绑定到列表视图的所选项目而更新组合框中的所选项目。您只是通过绑定到列表视图的所选项目来更新ComboBox中的文本。
你很可能是对的(在这一刻看它看它) - 我已经改变了一点 - 它的工作方式,所以Combox还在更改时更新ListView combobox和两个地方都改变了所选的类别


C#:
<ComboBox x:Name="CbxProject" Grid.Row="5" Grid.Column="2" HorizontalContentAlignment="Left"  VerticalContentAlignment="Center"
                                      ItemsSource="{Binding Path=Projects_GetActive}" DisplayMemberPath="ProjectName"
                                      Text="{Binding ElementName=LivCategories, Path=SelectedValue.ProjectName}"
                                      SelectedValue="{Binding LivCategories}">
                            </ComboBox>
 
解决方案

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,833
地点
切萨皮克,va.
编程经验
10+
非常好的解决方案!
 
最佳 底部