文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>使用ListBox中遇到的问题

使用ListBox中遇到的问题

时间:2010-09-22  来源:Ringgo.Yao

    这几天一直与ListBox打交道,对ListBox的了解也加深了一层,这篇文章把相关的思路写下来,为了简化起见,省略了一些无关重要的东西

    首先声明数据源对象,这里以一个简单的类为例

    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    public class People : ObservableCollection<Person>
    {
        public List<Person> Detailes { get; set; }
        public People()
        {
            Detailes = new List<Person> 
            {
                new Person{FirstName="David",LastName="White"},
                new Person{FirstName="Jim",LastName="Green"},
                new Person{FirstName="Tom",LastName="Polly"}
               
            };
        }
     }

   数据源已经建立好了,现在将其绑定到ListBox中,这里需要横向绑定,SDK中有横向绑定的实现,这里就不再进行细说,按照需求,当鼠标移到FirstName时提示

关于LastName的信息,才开始做的时候总是无法显示提示信息,然后在网上找到了原因:附加属性ToolTipService.ToolTip并没有继承上层元素的DataContext

  原因找到了,解决思路就清晰了,先声明一个值转换器

       public class MyConvert : IValueConverter
      {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value != null)
            {
                var str = value.ToString();
                TextBlock tb = new TextBlock();
                tb.Text = str;
                return tb;
            }
            return null;
        }
        ...    
     }

  将相关的类声明为资源

        <loacls:People x:Key="people"></loacls:People>
        <loacls:MyConvert x:Key="convert"></loacls:MyConvert>

  Xaml代码:

       <Grid  DataContext="{StaticResource people}" >
        <ListBox ItemsSource="{Binding Detailes}"                              
                 ScrollViewer.VerticalScrollBarVisibility="Hidden">       
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal">
                    </StackPanel>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>

<TextBlock Text="{Binding FirstName}" ToolTipService.Placement="Mouse"
ToolTipService.ToolTip="{Binding LastName,Converter={StaticResource convert}}" />
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
     </Grid>

这样就能够最终显示提示信息了,

 

虽然简单,但是也用到不少的知识点,不过上面有个地方我总是无法实现,即如DataGrid那样,将ListBoxItem的背景色进行交替变换,我模仿MSDN上

改变 ListView 中各行的背景色进行修改,但一直没能如愿以偿的实现,只好以后如果解决了再贴出来,如果有朋友实现过这个功能,也请不吝赐教!

 

 

代码下载:ListBoxExample.rar

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载