zoukankan      html  css  js  c++  java
  • 【WPF】ListBox使用DataTemplate 以及默认选中第一项Item

    ListBox中DataTemplate的用法如下 。

    <ListBox x:Name="areaLB" ItemsSource="{Binding AreaNumList}" SelectedItem="{Binding SelectedItem}" BorderThickness="0" Background="White">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <RadioButton x:Name="radioBtn" FontSize="14" GroupName="area" Style="{StaticResource myRadioButton2}">
                    <RadioButton.IsChecked>
                        <Binding Path="IsSelected" RelativeSource="{RelativeSource AncestorType=ListBoxItem}" Mode="TwoWay" />
                    </RadioButton.IsChecked>
                    <RadioButton.Content>
                        <Binding Path="Content" RelativeSource="{RelativeSource AncestorType=ListBoxItem}" Mode="TwoWay" />
                    </RadioButton.Content>
                </RadioButton>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

    需求:初始化时,使ListBox默认选中第一项。(否则将没有任一项被选中)

    过程:由于ListBox使用了DataTemplate,一直是想办法如何去访问/获取到ListBox中的第一项,然后设置该项

    RadioButton.isChecked = true

    搜到不少类似下面这种方法的,如何从控件中递归找到子控件,都没法解决问题:

    https://msdn.microsoft.com/en-us/library/bb613579.aspx

    private childItem FindVisualChild<childItem>(DependencyObject obj)
        where childItem : DependencyObject
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
        {
            DependencyObject child = VisualTreeHelper.GetChild(obj, i);
            if (child != null && child is childItem)
                return (childItem)child;
            else
            {
                childItem childOfChild = FindVisualChild<childItem>(child);
                if (childOfChild != null)
                    return childOfChild;
            }
        }
        return null;
    }

    最后才发现,直接把ListBox控件的选中项设为第一项即可!其实就是这么简单!!

    listBox1.SelectedIndex = 0;

    重要的参考:

    http://stackoverflow.com/questions/8221795/selecting-first-item-in-listbox

  • 相关阅读:
    js面对对象和jQuery的使用
    感知器PLA算法
    MSP430G2系列学习笔记
    数学建模——规划问题
    51单片机学习(一)
    打靶法求解两点边值问题
    GAOT工具箱(遗传算法)的应用
    数学建模方法
    关于mysql 5.7 版本登录时出现错误 1045的随笔
    oracle复习(二)
  • 原文地址:https://www.cnblogs.com/guxin/p/wpf-listbox-how-to-use-datatemplate.html
Copyright © 2011-2022 走看看