簡體   English   中英

WPF應用程序中的自定義組合框選擇的文本

[英]Custom combobox selected text within wpf application

我有一個wpf應用程序,其中有這個問題:

    <UserControl.Resources>
                <ItemsPanelTemplate x:Key="VSP">
                    <VirtualizingStackPanel 
                        VirtualizingPanel.CacheLength="20"
                        VirtualizingPanel.ScrollUnit="Item"
                        VirtualizingPanel.VirtualizationMode="Recycling"
                        VirtualizingPanel.IsVirtualizing="True"/>
                </ItemsPanelTemplate>
                <DataTemplate x:Key="ExpertTemplate">
                    <Grid Width="640">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="160"/>
                            <ColumnDefinition Width="160"/>
                            <ColumnDefinition Width="160" />
                            <ColumnDefinition Width="160"/>
                        </Grid.ColumnDefinitions>
                        <Label Content="{Binding fsign_id}" Grid.Column="0"   />
                        <Label Content="{Binding fsign_civilite}" Grid.Column="1" />
                        <Label Content="{Binding fsign_nom}" Grid.Column="2"  />
                        <Label Content="{Binding fsign_prenom}" Grid.Column="3"  />
                    </Grid>
                </DataTemplate>
            </UserControl.Resources>
        .............
         <DataGrid x:Name="grid"  ItemsSource="{Binding Entitites}" SelectedValue="{Binding SelectedValue}"   >
                <DataGrid.Resources>
                                <Style TargetType="DataGridCell">
                                    <Setter Property="HorizontalAlignment" Value="Center" />
                                </Style>
                 </DataGrid.Resources>
                 <DataGrid.Columns>
                                  <DataGridTemplateColumn Header="Participant" Width="200">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <skin:ParticipantExpert  SelectedValue="{Binding SelectedElement, Mode=TwoWay,  UpdateSourceTrigger=LostFocus}"  ItemsPanel="{StaticResource VSP}"  ItemTemplate="{DynamicResource ExpertTemplate }"   Width="220"      ItemsSource="{Binding ExpertCollection}"  >

                                            </skin:ParticipantExpert>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>
                  </DataGrid.Columns>
        </DataGrid>

定制的組合框:

 public class ParticipantExpert : ComboBox 
    {

        public ParticipantExpert()
        {

        } 
        protected override void OnSelectionChanged(SelectionChangedEventArgs e)
        {
            if (SelectedItem == null) { return; }
            vue_groupe_participant CurrentItem = (vue_groupe_participant)SelectedItem;
            Text = CurrentItem.fsign_nom + "   " + CurrentItem.fsign_prenom;
        }

    }

if (SelectedItem == null) { return; } if (SelectedItem == null) { return; } 當我從組合框中選擇一個元素時,事件將引發兩次! 第一個SelectedItem是選定的對象,而在第二個中,它將null作為值。

所以我需要知道:

  1. 為什么該活動兩次提出?
  2. 如何修復我的代碼?

謝謝,

您可以使用ItemTemplate

我的ComboBox看起來像這樣:

<ComboBox Margin="12,6,12,0" SelectedIndex="{Binding DatabaseIndex, Mode=TwoWay}" 
                  ItemsSource="{Binding Databases}" 
                  ItemTemplate="{StaticResource DatabaseComboTemplate}"/>

ItemTemplate看起來像這樣:

<DataTemplate x:Key="DatabaseComboTemplate" DataType="ItemTemplate">
        <StackPanel Orientation="Horizontal" Height="20">
            <Image Source="/AppWPF;component/Images/DatabaseImage.ico" Height="16" Width="16"/>
            <Label Content="{Binding DatabaseDisplayString}" Margin="0,-3,0,0"/>
        </StackPanel>
</DataTemplate>

輸出看起來像這樣:

在此處輸入圖片說明

安德魯·斯蒂芬斯是正確的。 您必須從處理程序中刪除文本分配。 您嘗試顯示的文本必須是綁定為SelectedItem的對象的屬性。

您需要閱讀有關ComboBox.Text的更多信息。

這是重要的部分

將Text屬性設置為不在集合中的值將保持SelectedIndex不變。

這意味着您必須向綁定對象添加一個屬性,該屬性為控件提供要顯示的文本。 不允許創建最初不屬於綁定對象的Text屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM