2010-09-22 2 views
1

У меня следующий пользовательский контроль:Странно ComboBox поведение - WPF

Ресурсы:

<DataTemplate x:Key="FilterComboDataTemplate"> 
     <Label Content="{Binding Item2}" /> 
    </DataTemplate> 

    <Style x:Key="FilterSelectorStyle" TargetType="ComboBox"> 
     <Setter Property="ItemsSource" Value="{Binding Filters}" /> 
     <Setter Property="SelectedItem" Value="{Binding SelectedFilter}" /> 
     <Setter Property="ItemTemplate" Value="{StaticResource FilterComboDataTemplate}" /> 
    </Style> 

Control Body:

<DockPanel> 
    <Label DockPanel.Dock="Top"> 
     Select your filter/value to apply: 
    </Label> 
    <ComboBox Style="{StaticResource FilterSelectorStyle}" /> 
    <StackPanel> 
     <!-- TODO: Fix Combobox First --> 
    </StackPanel> 
</DockPanel> 

Это внутри <Window> и открыт с использованием .ShowDialog(), это то, что происходит с элементами, когда я нажимаю на t он кнопка:

Undesirable Results http://img827.imageshack.us/img827/1561/whyowhy.png

Я в полном недоумении, почему это происходит, я проверил визуальное дерево, все, где оно должно быть. Я озадачен. Кто-то там испытывал странное поведение, подобное этому? Почему мои предметы на 0,0 на моем рабочем столе вместо прикрепленных к моим спискам?

ответ

1

Я быстро закодировал это. Не было никаких проблем.

<Window 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:WpfApplication5="clr-namespace:WpfApplication5" x:Class="WpfApplication5.MainWindow" 
     x:Name="MyWindow" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources>   
     <DataTemplate x:Key="FilterComboDataTemplate"> 
      <Label Content="{Binding Item2}" /> 
     </DataTemplate> 
    </Window.Resources> 
    <DockPanel> 

     <Label DockPanel.Dock="Top"> 
      Select your filter/value to apply: 
     </Label> 

     <ComboBox Height="32" ItemsSource="{Binding Filters, ElementName=MyWindow}" ItemTemplate="{DynamicResource FilterComboDataTemplate}"/> 

     <StackPanel> 
      <!-- TODO: Fix Combobox First --> 
     </StackPanel> 

    </DockPanel> 
</Window> 

Кроме того, я никогда не видел ни один кладя ItemSource и SelectedItem в стиле. Я не думаю, что это хорошая практика WPF. Я скорее привяжусь к ICollectionView, который позволяет группировать, фильтровать, управлять курсором и т. Д.

+0

Причина, по которой это в стиле, состоит в том, что для нескольких combobox потребуются те же настройки, что и для уменьшения дублирования XAML. – Aren

+0

Danm, не могу изменить мой предыдущий комментарий. Также: привязано к 'ICollectionView', ** Filters ** в datacontext имеет тип' ICollectionView'. Я также просто переместил все привязки на ComboBox, и я все еще получаю эту проблему. – Aren

Смежные вопросы