none
SL3 Combox 的使用 RRS feed

  • 问题

  • 我现在要向ComBox 控件中绑定两个值,一个value,一个key
    就向DropDownList,一个Text,一个value,
    并且我要得到选中的value
    这个怎么做,我试了好久都没有找到方法,希望大家给我解决一下,谢谢
    2009年8月10日 13:17

答案

  • 定义一个强类型,使用强类型对象绑定

    public class a
    {
         public string b
         public string c
    }

    List<a> l = new List<a>();

    l.add(new a{b="text",c="value"})
    ...........

    Combox.ItemSource = l;
    ------------------------------------------------------

    当你需要获得选中值的时候可以使用Combox.SelectionBoxItem得到一个object 然后直接AS成 A这个类型就可

    2009年8月11日 1:08
  • 做了一个示例给你,你试试.

    前台代码:
    <UserControl xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"  x:Class="SilverlightApplication21.Page"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
                    Width="400" Height="300">
        <Grid x:Name="LayoutRoot" Background="White">
           
                    <ComboBox x:Name="cmb" ItemsSource="{Binding}" Margin="0,10,0,100" SelectionChanged="cmb_SelectionChanged">
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Width="50" Height="30" Text="{Binding Name}" />
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
            <TextBlock x:Name="txtValue" Width="100" Height="30" Text="1000000000001"  Margin="0,200,0,0"/>
        </Grid>
    </UserControl>



    后台代码:

    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.Collections.ObjectModel;
    using System.ComponentModel;
    using System.Windows.Threading;
    using System.Windows.Controls.DataVisualization.Charting;
    
    namespace SilverlightApplication21
    {
        public partial class Page : UserControl
        {
            public Page()
            {
                InitializeComponent();
                
                this.Init();
            }
            public void Init()
            {
    
                this.cmb.ItemsSource = KeyValue.GetTestDate();
            }
     private void cmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
    
                if (e.AddedItems != null && e.AddedItems.Count > 0)
                {
                    KeyValue item = e.AddedItems[0] as KeyValue;
                    this.txtValue.Text = item != null ? item.Value as String : "";
                }
            }
    }
     public class KeyValue
        {
            public string Name { get; set; }
            public Object Value { get; set; }
    
            public static IList<KeyValue> GetTestDate()
            {
                IList<KeyValue> list = new List<KeyValue>();
                list.Add(new KeyValue() { Name = "1", Value = "aaaa" });
                list.Add(new KeyValue() { Name = "2", Value = "bbb" });
                return list;
            }
        }
    }

    努力!写一个js解析器,一个svg插件,一个绘图程序,做好自己,呵呵~!
    2009年8月12日 5:32
    版主

全部回复

  • 定义一个强类型,使用强类型对象绑定

    public class a
    {
         public string b
         public string c
    }

    List<a> l = new List<a>();

    l.add(new a{b="text",c="value"})
    ...........

    Combox.ItemSource = l;
    ------------------------------------------------------

    当你需要获得选中值的时候可以使用Combox.SelectionBoxItem得到一个object 然后直接AS成 A这个类型就可

    2009年8月11日 1:08
  • 做了一个示例给你,你试试.

    前台代码:
    <UserControl xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"  x:Class="SilverlightApplication21.Page"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
                    Width="400" Height="300">
        <Grid x:Name="LayoutRoot" Background="White">
           
                    <ComboBox x:Name="cmb" ItemsSource="{Binding}" Margin="0,10,0,100" SelectionChanged="cmb_SelectionChanged">
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Width="50" Height="30" Text="{Binding Name}" />
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
            <TextBlock x:Name="txtValue" Width="100" Height="30" Text="1000000000001"  Margin="0,200,0,0"/>
        </Grid>
    </UserControl>



    后台代码:

    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.Collections.ObjectModel;
    using System.ComponentModel;
    using System.Windows.Threading;
    using System.Windows.Controls.DataVisualization.Charting;
    
    namespace SilverlightApplication21
    {
        public partial class Page : UserControl
        {
            public Page()
            {
                InitializeComponent();
                
                this.Init();
            }
            public void Init()
            {
    
                this.cmb.ItemsSource = KeyValue.GetTestDate();
            }
     private void cmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
    
                if (e.AddedItems != null && e.AddedItems.Count > 0)
                {
                    KeyValue item = e.AddedItems[0] as KeyValue;
                    this.txtValue.Text = item != null ? item.Value as String : "";
                }
            }
    }
     public class KeyValue
        {
            public string Name { get; set; }
            public Object Value { get; set; }
    
            public static IList<KeyValue> GetTestDate()
            {
                IList<KeyValue> list = new List<KeyValue>();
                list.Add(new KeyValue() { Name = "1", Value = "aaaa" });
                list.Add(new KeyValue() { Name = "2", Value = "bbb" });
                return list;
            }
        }
    }

    努力!写一个js解析器,一个svg插件,一个绘图程序,做好自己,呵呵~!
    2009年8月12日 5:32
    版主