wpf检查列表框

时间:2011-06-27 03:47:10

标签: c# wpf xaml

我是wpf的新手。为了获得检查列表框功能,我已将xaml添加到我的代码中,但我的屏幕中没有输出。只有空白,它可能是什么?

<TabItem Header="Samples" >
            <ListBox Margin="10" Width="373" Height="236">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">                               
                            <TextBlock Text="MyText"/>
                            <CheckBox IsChecked="False"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </TabItem>

6 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

列表框有点用于此类任务。看看ItemsControl。 这是我使用的代码:

<ItemsControl            
    ItemsSource="{Binding ***}" IsTabStop="False">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <CheckBox
                Content="{Binding Name}"
                IsChecked="{Binding IsSelected}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

答案 2 :(得分:1)

更好的是,只需在Extended WPF Toolkit中使用新的CheckListBox控件 http://wpftoolkit.codeplex.com/wikipage?title=CheckListBox&referringTitle=Home

答案 3 :(得分:0)

用此

替换您的代码
<TabItem Header="Roles" >             
    <ListBox Margin="10" Width="373" Height="236">
        <ListBox.ItemTemplate>                     
            <DataTemplate>                         
               <StackPanel Orientation="Horizontal">
                   <TextBlock Text="MyText"/>
                   <CheckBox IsChecked="False"/>
               </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
        <ListBoxItem>Hi</ListBoxItem>
    </ListBox>
</TabItem> 

并告诉我们它是否仍显示空白

答案 4 :(得分:0)

这可能会有所帮助

1.为了工作datatemplate你必须指定itemsource,在这里我已经将Stateslist的一组项目限制在其中。

2.同时将Datacontext设置为ViewModel或将CodeBehind设置为datacontext。

3.Datacontext将StateList属性集合分发到listbox itemsource

使用codebehind -

public Window1()
    {
        InitializeComponent();
        this.DataContext = this;
    LoadData();

    }

using viewmodel 

public Window1()
    {
        InitializeComponent();
        DataContext = new Window1ViewModel();
    LoadData();

    }



//MyItemsource Property for listbox

private ObservableCollection<States> _stateslist;
    public ObservableCollection<States> StatesList
    {
        get { return _stateslist; }
        set
        {
            _stateslist = value;
            RaisePropertyChanged(() => StatesList);
        }
    }

   // Sample Data Loading

public void LoadData()
    {
        StatesList = new ObservableCollection<States>();

        StatesList.Add(new States
        {
            StateName = "Kerala"
        });
        StatesList.Add(new States
        {
            StateName = "Karnataka"
        });
        StatesList.Add(new States
        {
            StateName = "Goa"
        });
    }

Window1.Xaml

  <ListBox  ItemsSource="{Binding StatesList}"  >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <CheckBox IsChecked="{Binding IsSelected"} Content="{Binding StateName}" />
                    <TextBox Text="{Binding TextBoxValue}" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

答案 5 :(得分:-1)

检查一下它正在工作..你正在使用TabItem,但你没有在TabControl中定义它

  <TabControl>
  <TabItem Header="Tab1">
        <ListBox Margin="10" Width="373" Height="236">
            <ListBox.Items>

                    <StackPanel Orientation="Horizontal">                               
                        <TextBlock Text="MyText"/>
                        <CheckBox IsChecked="False"/>
                    </StackPanel>

            </ListBox.Items>
        </ListBox>
 </TabItem>
  </TabControl>

如果您是WPF的新手,请使用XamlPadX,它将为您提供很好的帮助。