silverlight: редактирование значения текстового поля в пользовательском шаблоне списка - PullRequest
0 голосов
/ 22 июня 2011

Я создал пользовательский шаблон элемента для моего Combobox, в котором есть текстовое поле. Я могу ввести текстовое поле, когда выпадающий список открыт (выпадающий), но как только элемент выбран и раскрывающийся список закрыт, я больше не могу писать в текстовом поле.

<ComboBox ItemsSource="{Binding CriteriaCollection}" Margin="2,0,5,5" Height="35" Grid.Column="1">
        <ComboBox.ItemTemplate>
          <DataTemplate>
            <Grid Height="25" HorizontalAlignment="Stretch">
              <Grid.ColumnDefinitions>
                <ColumnDefinition Width="20" />
                <ColumnDefinition Width="150"/>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
              </Grid.ColumnDefinitions>
              <RadioButton Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center" IsChecked="{Binding IsSelected, Mode=TwoWay}" />
              <TextBlock Grid.Column="1" Text="{Binding DisplayText}" VerticalAlignment="Center"   />
              <TextBox Grid.Column="2" Text="{Binding Value,Mode=TwoWay}" VerticalAlignment="Center" MinWidth="{Binding ValueTextBoxMinWidth}" MaxWidth="{Binding ValueTextBoxMaxWidth}" HorizontalAlignment="Left"/>
              <TextBlock Grid.Column="3" Text="{Binding PostValueText}" VerticalAlignment="Center" Visibility="{Binding ComparatorVisibility}" Margin="5,0,5,0" HorizontalAlignment="{Binding PostValueTextHoirzontalAlignment}" />
              <TextBox Grid.Column="4" Text="{Binding UpperValue,Mode=TwoWay}" VerticalAlignment="Center" MinWidth="40" Visibility="{Binding UpperValueVisibility}" Margin="5,0,5,0"/>
            </Grid>
          </DataTemplate>
        </ComboBox.ItemTemplate>
      </ComboBox>

Как вы можете видеть из приведенного выше xaml, я решаю, что отображать в шаблоне, привязывая к некоторым свойствам моей модели представления, следовательно, не просто с помощью поля со списком, а с отдельным элементом управления текстовым полем рядом с ним.

Есть ли способ разрешить редактирование текста в выпадающем списке после выбора элемента?

Ответы [ 2 ]

0 голосов
/ 22 июня 2011

вы можете использовать собственный шаблон для вашего комбинированного списка в целом, как сказал RobSiklos, но я думаю, что вы можете сделать это в самом xaml, написав собственный шаблон, используя свойство overridedefaultstyle, снова используйте Textbox вместо Textblock в представителе контента сказал РобСиклос.

Тогда вы также можете использовать триггеры, такие как IsSelected и другие свойства, и обрабатывать ваши вещи.

См. Эту ссылку , чтобы узнать, как создать собственный шаблон, и, как мы надеемся, использование аналогичного шаблона для вашего Combobox поможет вам.

0 голосов
/ 22 июня 2011

К сожалению, то, что показано, когда ComboBox закрыт, полностью не связано с ItemTemplate (что и показано, когда отображается выпадающий список).

Я думаю, что ваша единственная надежда - это создать подкласс ComboBox и повторношаблон это.Новый шаблон будет иметь TextBox вместо TextBlock внутри ContentPresenter.В вашем подклассе вы должны установить двустороннюю привязку между текстом TextBox и текстом выбранного элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...