Rob*_*ert 1 .net c# data-binding wpf expression-blend
我与WPF完全混淆,我尝试在WPF中绑定到datagrid
这是XAML代码
<Grid x:Name="LayoutRoot">
<Grid HorizontalAlignment="Left" Height="440" VerticalAlignment="Top" Width="632">
<DataGrid HorizontalAlignment="Left" Height="420" Margin="10,10,0,0" VerticalAlignment="Top" Width="603" ItemsSource="{Binding Source=MailCollection}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="id" Binding="{Binding Id}"/>
<DataGridTextColumn Header="nazwa" Binding="{Binding Name}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Grid>
Run Code Online (Sandbox Code Playgroud)
这是MailTpl类
public class MailTpl
{
public string Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
以下是我的约束方式
public partial class WindowDataGridTest : Window
{
ObservableCollection<MailTpl> _MailCollection = new ObservableCollection<MailTpl>();
public ObservableCollection<MailTpl> MailCollection { get { return _MailCollection; } }
public WindowDataGridTest()
{
_MailCollection.Add(new MailTpl { Id= "abbb", Name = "badfasdf" });
_MailCollection.Add(new MailTpl { Id = "asasdfasdfdf", Name = "basdfasdfaa" });
this.InitializeComponent();
// Insert code required on object creation below this point.
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它不起作用.有线索吗?网格没有显示任何值.
Pav*_*nin 16
只是对未来的建议.
Visual Studio - >选项 - >调试 - >输出窗口 - > WPF跟踪设置.在这里,您可以设置详细程度,并在Ouptut窗口中查看有关数据绑定的重要信息.它节省了我几个小时.
现在共鸣.您将MailCollection声明为Window的公共属性,但默认情况下会对DataContext进行绑定.
所以,你有两种方式:
this.DataContext = _MailCollection
Run Code Online (Sandbox Code Playgroud)
并将绑定更改为
ItemsSource={Binding}
Run Code Online (Sandbox Code Playgroud)
或者只是更改绑定到此:
ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=MailCollection}"
Run Code Online (Sandbox Code Playgroud)
我也推荐这个pdf绑定备忘单.它缺少一些WPF 4.5功能,但仍然有用.
| 归档时间: |
|
| 查看次数: |
16033 次 |
| 最近记录: |