2011-07-21 19 views
0

用戶控制的詳細信息:C#.NET WPF自定義用戶控件zIndex的問題有類似的用戶控制

已創建下拉列表控件(就像爲組合框),點擊向下箭頭按鈕,將顯示下面的文字列表我的用戶控制箱

我已經設置zIndex屬性

問題:

案例1:當有其他用戶控件(比我的自定義用戶控件等),以及如果顯示下拉列表中,其他用戶控件隱藏在我的用戶後面控制。這是完全好的

情況2:有2個自定義用戶控件,如果列表從第一個用戶控件顯示,則第二個用戶控件出現在列表中。這是我面對我的控制問題

XAML是如下

<UserControlx:Class="UserControls.AutoCompleteComboBox" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Panel.ZIndex="1110" LostFocus="UserControl_LostFocus" Height="Auto"> 

     <Canvas Name="MainCanvas"> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition></RowDefinition> 
        <RowDefinition></RowDefinition> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto" MinWidth="150"></ColumnDefinition> 
        <ColumnDefinition Width="20"></ColumnDefinition> 
       </Grid.ColumnDefinitions> 
       <TextBox Name="autoTextBox" Height="20" MinWidth="150" Width="Auto" MinHeight="20" Style="{DynamicResource AutoCompleteBox}" BorderThickness="2" 
        Margin="0,0,0,0" TextWrapping="NoWrap" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Top"/> 
       <Button Content="6" FontFamily="Marlett" Grid.Row="0" Grid.Column="1" FontSize="15" Margin="0,0,0,0" Height="20" Width="20" HorizontalAlignment="Right" VerticalAlignment="Top" Background="{StaticResource BackgroudBlueBrush}" Click="Button_Click" Padding="0" Cursor="Hand"></Button> 
       <StackPanel Grid.Row="1" Grid.ColumnSpan="2" > 
        <ListBox Name="suggestionListBox" SelectionChanged="suggestionListBox_SelectionChanged" MouseDown="suggestionListBox_MouseDown" 
        Background="LightYellow" SnapsToDevicePixels="True" 
        Visibility="Collapsed" 
        MinWidth="150" IsHitTestVisible="True" MinHeight="70" Height="70" 
        VerticalAlignment="Top" LostFocus="suggestionListBox_LostFocus"/> 
       </StackPanel> 
      </Grid> 
     </Canvas> 
</UserControl> 

回答

0

你的做法是不正確管理的控制的重疊正確的。也許你可以使用ZIndex屬性創建一些技巧,但這不會是解決方案。

如果您需要下拉控件,最好的方法是使用Popup控件並在其中播放。基本上,它創造了另一個無邊界的窗口,成爲你的孩子。

另一種方法,可能比Popup更簡單但不好,它使用的是裝飾者。也許這是與你們最相似的技術。

乾杯

+0

感謝您的評論,我也會嘗試這個 – Milind

+0

感謝您的意見。正如你所說的,Popup是個不錯的選擇。我只是更新了XAML以在彈出窗口中包含Popup和Suggestion列表。感謝你們所有人的幫助。 – Milind

0

你有沒有嘗試設置的StackPanel的Z-索引1+控件的Z-索引?這應該會將下拉部分放在用戶控件的任何其他實例的上方。

Canvas.ZIndex可以在StackPanels上使用。

+0

我需要運行它嗎?如果我有一個WPF窗體,我在其上放置2個自定義用戶控件ctlControl1和ctlControl2如何設置它?請建議... – Milind