我看了50个或更多关于这个控件的网页.在我看来,这对我来说可能毫无用处.
它接缝"GridView"是"ListView"控件的"视图".我在使用控件和加载数据时没有任何问题,但操纵它似乎很困难.
public partial class Designer : UserControl { public Designer() { InitializeComponent(); ListNewItem = new List (); NewItem.Add(new RandomData { Column1 = "Item1", Column2 = "MoreData", Column3 = "MoreData", Column4 = "MoreData" }); ListView_1.ItemsSource = NewItem; } } public class RandomData { public String Column1 { get; set; } public String Column2 { get; set; } public String Column3 { get; set; } public String Column4 { get; set; } }
很简单,它将数据加载到列中.但是我想在那里加载其他东西.像复选框或图像文件或东西.
public Designer() { InitializeComponent(); CheckBox AttemptThis = new CheckBox(); AttemptThis.Content = "Testing"; AttemptThis.IsChecked = true; ListNewItem = new List (); NewItem.Add(new RandomData { Column1 = AttemptThis, Column2 = "MoreData", Column3 = "MoreData", Column4 = "MoreData" }); ListView_1.ItemsSource = NewItem; } } public class RandomData { public CheckBox Column1 { get; set; } public String Column2 { get; set; } public String Column3 { get; set; } public String Column4 { get; set; } }
我得到checkbox.tostring()出现在列?
这个控制能够做到这一点吗?如果单元格是certian值,还有一种方法可以显示复选框或图像吗?
如果你正在使用WPF,你真的需要忘记你可能习惯的任何和所有的概念和方法,如winforms,理解和拥抱WPF Mentality等古老的技术.
操纵它似乎很难
YES.WPF Visual Tree是一个非常复杂的结构,具有您真正不想进入的各种神秘行为.这就是为什么在编写WPF中的单行代码之前必须学习MVVM的原因
我想在那里加载其他东西.像复选框或图像文件或东西.
您不会将内容"加载"到UI中.您可以在XAML中定义 UI ,并使用DataBinding将UI绑定到相关数据,在a Data Model
或a中定义ViewModel
:
<Window x:Class="WpfApplication7.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" > <ListView ItemsSource="{Binding}"> <ListView.View> <GridView> <GridViewColumn> <GridViewColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked="{Binding IsSelected}" Content="{Binding DisplayName}"/> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView> </Window>
代码背后:
public partial class Window1 : Window { public Window1() { InitializeComponent(); DataContext = Enumerable.Range(0,10) .Select(x => new DataItem() { DisplayName = "Item" + x.ToString(), IsSelected = x % 2 == 0 }); } }
数据项:
public class DataItem { public bool IsSelected { get; set; } public string DisplayName { get; set; } }
结果:
了解如何no need
操作过程代码中的任何UI元素.您只需以简单属性的形式定义数据,然后将UI设置为DataContext
.
双向数据绑定还可以节省在修改后从UI中"读取值"的需要.在WPF中没有"从UI读取数据"这样的东西,因为DataBinding会处理这个问题.只需读取数据项中的数据即可.
WPF Rocks.将我的代码复制并粘贴到一个File -> New Project -> WPF Application
并自己查看结果.