我有一个像这样的数据模板
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>
我想与我的datatemplate的“Name”属性绑定,但是现在它绑定到我的List视图项的名为“Name”的属性。可以帮助正确的方法或语法
答案 0 :(得分:1)
DataContext
的{{1}}是它正在模板化的DataObject,您必须绑定回DataTemplate
或在这种情况下DataTemplate
才能访问该属性。
尝试:
DefaultDataTemplate
或
Text="{Binding Name, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataTemplate}}}
答案 1 :(得分:1)
您没有使用该模板,您只是为该模板提供了与该类相同的键名。
此外,自定义数据模板应具有要绑定的依赖项属性。
你的意思是这样做:
<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>