ComboBox与TreeView

时间:2012-01-12 12:46:48

标签: wpf user-controls combobox

我需要像Combobox一样创建一个userControl。 在需要TreeView和Button的项目中。 如果我导航树,则项目应转到底部的文本框。 如果我单击按钮,树应该折叠。 我的第一个想法是像这样,但它并不好。     

    <StackPanel Orientation="Vertical">
        <StackPanel  Orientation="Horizontal">
            <TextBox Text="{Binding Adresse, Mode=TwoWay}" MaxLength="50" MinWidth="170" Grid.Row="5" Margin="5,2,5,2"/>
            <Button  Width="25" Margin="2"  Click="Down">
                <Image Source="/C1_net;component/Images/arrow.jpg" HorizontalAlignment="Left" />
            </Button>               

        </StackPanel>
        <StackPanel x:Name="Tree"  Orientation="Vertical" Visibility="Collapsed">                
            <sdk:TreeView Height="200" Name="treeView1" Width="200" />
            <Button Content="{Binding Path=ApplicationStrings.OKButton, Source={StaticResource ResourceWrapper}}" Width="75" Margin="5" Click="OnOk" HorizontalAlignment="Right"/>

        </StackPanel>

    </StackPanel>

</Grid>

如果我切换到Visible,则Control需要更多空间。 所以我需要将树放在窗口的其余部分前面。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

确定。

  

我认为你应该重新审视你的互动。

我的问题很难想到,如果我选择i Item,The Tree wood将被关闭。 我将在Hirarchical DataObjekt中导航并将路径作为选择项。 所以现在我要这样做:

public interface ITreeViewItemModel
{
    string SelectedValuePath { get; }

    bool IsExpanded { get; set; }

    bool IsSelected { get; set; }

    IEnumerable<ITreeViewItemModel> GetHierarchy();
    IEnumerable<string> GetDisplayHierarchy();
    IEnumerable<ITreeViewItemModel> GetChildren();
}

public class ComboBoxTreeView : ComboBox
{
    private ExtendedTreeView _treeView;
    private ContentPresenter _contentPresenter;

    public ComboBoxTreeView()
    {
        this.DefaultStyleKey = typeof(ComboBoxTreeView);
    }

...

我找到了这个http://vortexwolf.wordpress.com/2011/04/29/silverlight-combobox-with-treeview-inside/