与Datatemplate成员绑定
本文关键字:绑定 成员 Datatemplate | 更新日期: 2023-09-27 18:29:02
我有一个类似的数据模板
public class DefaultDataTemplate : DataTemplate
{
public string Name
{
get;
set;
}
}
我在xaml中使用,就像这个
<!-- Default DataTemplate -->
<DataTemplate x:Key="DefaultDataTemplate">
<Grid Margin="4" MinHeight="25">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" FontWeight="Bold" />
</Grid>
</DataTemplate>
我想用我的数据模板的"Name"属性进行绑定,但现在它绑定到了我的列表视图项的名为"Name"的属性。有人能帮助我找到正确的方法或语法吗?
DataTemplate
的DataContext
是它正在模板化的DataObject,您必须绑定回DataTemplate
,或者在本例中绑定回DefaultDataTemplate
才能访问该属性。
尝试:
Text="{Binding Name, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataTemplate}}}
或
Text="{Binding Name, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type myNamespace:DefaultDataTemplate }}}
您没有使用模板,您只是给了模板与类相同的键名。
此外,自定义数据模板应该具有要绑定的依赖属性。
你真的想这么做吗:
<ListBox ItemsSource="{Binding Persons}">
<ListBox.DataTemplate>
<DataTemplate >
<Grid Margin="4" MinHeight="25">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="Name" FontWeight="Bold" />
<TextBox Margin="8,0" Grid.Column="1" Text="{Binding Name}" />
</Grid>
</DataTemplate>
</ListBox.DataTemplate>
</ListBox>
或者
<Window.Resources>
<DataTemplate x:Key="DefaultDataTemplate">
<Grid Margin="4" MinHeight="25">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="Name" FontWeight="Bold" />
<TextBox Margin="8,0" Grid.Column="1" Text="{Binding Name}" />
</Grid>
</DataTemplate>
</Window.Resources>
<ListBox ItemsSource="{Binding Persons}" DataTemplate="{StaticResource DefaultDataTemplate}"/>
假设Person类有一个属性Name,Persons属性是Observable<Person>