locked
如何在dataform控件中嵌入combobox,并且绑定数据。 RRS feed

答案

  • 你好,
     
          不知道你的具体数据源是什么,我只能模拟以下了.  这个是SL3的例子
        <UserControl.Resources> 
            <local:CbSource x:Key="CBSource"></local:CbSource>
        </UserControl.Resources>
      <Grid >
          <dataFormToolkit:DataForm x:Name="df"  AutoCommit="False" AutoEdit="True">
                <dataFormToolkit:DataForm.EditTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBox Text="{Binding Age,Mode=TwoWay}"></TextBox>
                            <TextBox Text ="{Binding Name,Mode=TwoWay}"></TextBox>
                            <ComboBox  SelectedItem="{Binding Nation,Mode=TwoWay}" ItemsSource="{Binding Data,Source={StaticResource CBSource}}"></ComboBox>                        
                        </StackPanel>
                    </DataTemplate>
                </dataFormToolkit:DataForm.EditTemplate>
            </dataFormToolkit:DataForm>
      </Grid>
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
    
                df.ItemsSource = new ObservableCollection<Person>() { 
                    new Person(){Age=12,Name="Micheal",Nation="China"},
                    new Person(){Age=12,Name="Jason",Nation="England"},
                    new Person(){Age=12,Name="Ronan",Nation="Japan"},
                    new Person(){Age=12,Name="Diana",Nation="China"},
                };           
            }
        }
        public class CbSource {
            private ObservableCollection<string> data = new ObservableCollection<string>() {
                "China","Japan","America","England"
            };
    
            public ObservableCollection<String> Data {
    
                get {
                    return data;
                }
            }
        }
        public class Person:IEditableObject {
    
            public int Age { get; set; }
            public string Name { get; set; }
            public string Nation { get; set; }
    
            #region IEditableObject Members
            public void BeginEdit()
            {      
            }
    
            public void CancelEdit()
            {           
            }
            public void EndEdit()
            {        
            }
            #endregion
        }
    2010年1月12日 9:52
  • dataform可以通过CommandButtonsVisibility明白了,通过|运算符来实现。
    2010年1月14日 1:26

全部回复

  • 你好,
     
          不知道你的具体数据源是什么,我只能模拟以下了.  这个是SL3的例子
        <UserControl.Resources> 
            <local:CbSource x:Key="CBSource"></local:CbSource>
        </UserControl.Resources>
      <Grid >
          <dataFormToolkit:DataForm x:Name="df"  AutoCommit="False" AutoEdit="True">
                <dataFormToolkit:DataForm.EditTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBox Text="{Binding Age,Mode=TwoWay}"></TextBox>
                            <TextBox Text ="{Binding Name,Mode=TwoWay}"></TextBox>
                            <ComboBox  SelectedItem="{Binding Nation,Mode=TwoWay}" ItemsSource="{Binding Data,Source={StaticResource CBSource}}"></ComboBox>                        
                        </StackPanel>
                    </DataTemplate>
                </dataFormToolkit:DataForm.EditTemplate>
            </dataFormToolkit:DataForm>
      </Grid>
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
    
                df.ItemsSource = new ObservableCollection<Person>() { 
                    new Person(){Age=12,Name="Micheal",Nation="China"},
                    new Person(){Age=12,Name="Jason",Nation="England"},
                    new Person(){Age=12,Name="Ronan",Nation="Japan"},
                    new Person(){Age=12,Name="Diana",Nation="China"},
                };           
            }
        }
        public class CbSource {
            private ObservableCollection<string> data = new ObservableCollection<string>() {
                "China","Japan","America","England"
            };
    
            public ObservableCollection<String> Data {
    
                get {
                    return data;
                }
            }
        }
        public class Person:IEditableObject {
    
            public int Age { get; set; }
            public string Name { get; set; }
            public string Nation { get; set; }
    
            #region IEditableObject Members
            public void BeginEdit()
            {      
            }
    
            public void CancelEdit()
            {           
            }
            public void EndEdit()
            {        
            }
            #endregion
        }
    2010年1月12日 9:52
  • 非常感谢!我现在用了一个笨办法,就是给模板中的控件命名的方式,在ContentLoaded事件中,通过FindNameInContent来找到相关combobox控件来给他的itemsource绑定数据...不过也挺麻烦的。
    如果在xaml文件中没有写Resources,而是通过Resources.add的方式添加资源,是不是控件就不会找到相关的key呢?
    还有,dataform可以通过CommandButtonsVisibility来设置CommandButton,如何通过程序来控制呢?contorl.CommandButtonsVisibility = ?
    比如我想同时设置为DataFormCommandButtonsVisibility.Navigation和DataFormCommandButtonsVisibility.Add?表达式该如何写呢?还恳请指教啊!

    2010年1月13日 14:21
  • dataform可以通过CommandButtonsVisibility明白了,通过|运算符来实现。
    2010年1月14日 1:26