1

我有一个像这样的数据模板

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>

我想与我的数据模板的“名称”属性进行绑定,但现在它绑定到我的列表视图项的名为“名称”的属性。任何人都可以帮助正确的方式或语法

4

2 回答 2

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>

于 2013-08-24T05:54:22.923 回答
1

DataContextfor a是它正在模板化的DataTemplateDataObject,您必须绑定回DataTemplateor 在这种情况下DefaultDataTemplate才能访问该属性。

尝试:

Text="{Binding Name, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataTemplate}}}

或者

Text="{Binding Name, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type myNamespace:DefaultDataTemplate }}}
于 2013-08-24T05:52:25.657 回答