Combobox SelectedItem更改ListView中具有相同绑定值的所有绑定文本框

时间:2015-02-17 11:54:18

标签: c# wpf xaml

所以我在UserControl中有一个ComboBox。从ListView中选择项目时,将显示此UserControl,并负责编辑所选对象的值。问题是如果我在ListView中有更多具有与ComboBox负责更改的值相同的对象,则所有这些值都将更改为ListView中所选项的值。

我有这个ListView:

<ListView x:Name="AcorduriListView" ItemsSource="{Binding ., UpdateSourceTrigger=PropertyChanged}"
                                      ItemContainerStyle="{StaticResource AcordListViewItem}" />

使用此模板:

 <Style TargetType="ListViewItem" x:Key="AcordListViewItem">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListViewItem}">
                <Grid
                    d:DataContext="{d:DesignData Source=DesignTimeData/AcordSampleData.xaml, IsDesignTimeCreatable=True}">


                   ...
                           <TextBlock x:Name="CategorieDescriptionTextBlock" Padding="3,0,0,0" Foreground="Black"
                                       Visibility="{Binding ElementName=CategorieTextBlock, Path=Text, Converter={StaticResource StringNullOrEmptyToVisibilityConverter}}"
                                       Text="Completează categoria" />
                            <TextBlock x:Name="CategorieTextBlock"
                                       Padding="3,0,0,0" Foreground="Black"
                                       Text="{Binding Categorie.Nume}"
                                       Visibility="{Binding ElementName=CategorieDescriptionTextBlock, Path=IsVisible, Converter={StaticResource InverteBooleanToVisibilityConverter}}" />

                           ...
                        </StackPanel>
                    </Border>
                    </Border>
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="rootPanel" Property="Background"
                                Value="{StaticResource AccentColorBrush}" />
                    </Trigger>
                    <Trigger Property="IsSelected" Value="True">
                        <Setter TargetName="rootPanel" Property="Background"
                                Value="{StaticResource AccentColorBrush}" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

ListView绑定到此Object的集合:

 public class Acord : INotifyPropertyChanged, IChangeTracking
{
   public string Name{ get; set; }
   ...
   public int CategorieId { get; set; }

   public virtual Categorie Categorie { get; set; }
}

其中Categorie是:

public class Categorie : INotifyPropertyChanged
{
   public string Nume { get; set; }
   ....
    private ObservableCollection<Acord> _acorduri;

    public virtual ObservableCollection<Acord> Acorduri{ get; set; }        
}

当选择此ListView中的项目时,将根据ListView SelectedIndex上的触发器显示UserControl。 UserControl将DataContext绑定到ListView SelectedItem(Acord对象)。从这个UserControl中的许多控件我有一个Combobox CategorieAcordComboBox,它的ItemsSource绑定到Categorie个对象的集合。

<ComboBox Grid.Row="2" Margin="5,0,5,5" x:Name="CategorieAcordComboBox"
                                          DisplayMemberPath="Nume" SelectedValuePath="CategorieId"
                                          Text="{Binding Categorie.Nume}"

                                          IsSynchronizedWithCurrentItem="False" />
<DatePicker Grid.Row="3" Margin="5" FontSize="16" x:Name="DataAcorDatePicker"
                                            controls:TextBoxHelper.Watermark="Data"
                                            SelectedDate="{Binding Data, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Grid.Row="4" x:Name="LocatieAcordTextBox" Margin="5"
                                         controls:TextBoxHelper.UseFloatingWatermark="True"
                                         controls:TextBoxHelper.Watermark="Locație" FontSize="16"
                                         Text="{Binding Locatie, UpdateSourceTrigger=PropertyChanged}" />

我的问题是,当我在ComboBox中选择一个不同的项目时,当Text绑定设置为Categorie.Nume时,模板中具有相同值的所有TextBox CategorieTextBlock的内容将更改为ComboBox中的选定值。

视频:http://screencast.com/t/bbRsb6RMwkZ7

0 个答案:

没有答案